2017-03-27 6 views
0

これは、一致する文字列です76c24efd-ec42-492a-92df-c62cfd4540a3です。次の正規表現は、36文字の長さの文字列を英数字と ' - 'でマッチさせます。ダッシュで区切られたグループの文字数と一致する正規表現ですか?

[a-zA-Z0-9\-]{36}

私はこの正規表現に追加しようとしていますので、<8 chars> - <4 chars> - <4 chars> - <4 chars> - <12 chars>

+3

使用: '^ [-f0-9] {8} - (?:[-f0-9] {4} - ){3} [-F0- 9] {12} $ ' – anubhava

+0

@anubhavaこの式は16進文字と一致しますが、英数字と一致させたい場合は、" f "のすべてのインスタンスを" z " – andrew

答えて

0

は、以下がダッシュに続く8つの文字のグループにマッチしますときにのみマッチし、その後、4つの文字のグループが続きますダッシュを3回、次に12文字のグループを指定します。

^[a-z0-9]{8}-(?:[a-z0-9]{4}-){3}[a-z0-9]{12}$/ 

結果を示す短いJavaScriptテストです。

$('.test').each(function(row, item) { 
 
    var val = $($(item).children()[0]).html() 
 
    var result = /^[a-z0-9]{8}-(?:[a-z0-9]{4}-){3}[a-z0-9]{12}$/gi.test(val); 
 
    $($(item).children()[1]).html(result.toString()) 
 
});
th { 
 
    text-align:left; 
 
    padding-right:10px; 
 
} 
 
td { 
 
    border: 1px solid #ccc; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table style="border: 1px solid black"> 
 
    <tr><th>Test</th><th>Result</th><th>Desired Result</th></tr> 
 
    <tr class="test"><td>76c24efd-ec42-492a-92df-c62cfd4540a3</td><td></td><td>Good</td></tr> 
 
    <tr class="test"><td>76c24efd-ecz42-492a-92df-c62cfd4540a3</td><td></td><td>Bad Length - 2nd segment too long</td></tr> 
 
    <tr class="test"><td>76c24efd-ec2-492a-92df-c62cfd4540a31</td><td></td><td>Bad Segment Lengths</td></tr> 
 
    <tr class="test"><td>76$24efd-ec42-492a-92df-c62cfd4540a3</td><td></td><td>Bad Char ($)</td></tr> 
 
</table>

関連する問題