1

大学の登録番号を正規表現したい。私は75%成功しています。私は新しいです、そして、私はそれを作る方法を知りません。これが私がしていることです。

<!DOCTYPE html>
<html> 
<body>

<script>
str = "l1s10bscs"; //successfully tested
                   //but i want to append any 4 digits at the end of l1s10bscs

re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}[bscs]/g;

result = re.test(str);

document.write(result);

</script>

</body>
</html>

これを試しましたが、機能しません。

re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}[bscs][0-9]{4}/g;  // this doesn't work 
4

3 に答える 3

3
/[a-z]\d[sf]\d{2}bscs\d{4}/i

あなたの説明によると、これは合うはずです。

私は以下を変更しました:

  • [bscs]は「bまたはsまたはcまたはs」を意味します(したがって、「bまたはsまたはc」、余分なsは無意味です)。リテラルの4文字の文字列「bscs」だけが必要でした
  • \ d{1}は\dと同じです-これはエラーではありませんが、文字を1回だけ出現するものとして明示的に定義する理由はありません。
  • \ gフラグはありますが、\ iがないため、探している文字列をより大きな文字列内で複数回照合しますが、検索では大文字と小文字が区別されません。
  • [s | S | f |F]は「sまたは|またはSまたは|...」を意味します。「sまたはSまたはf...」を意味し、[sSfF]と表記されます。
  • \ iは検索で大文字と小文字を区別しないようにするために使用されるため、[sSfF]を[sf]に簡略化しました。
于 2012-12-05T20:35:24.667 に答える
0

[]あなたは混乱しているようです()

()グループを作成しますが、[]「内側から任意の文字に一致する」ことを意味します。

[s|S|f|F]を意味し's' OR '|' OR 'S' OR 'f' OR 'F'ます。(s|S|f|F)またはである必要があります[sSfF]

注:i修飾子を使用して、大文字と小文字を区別しないようにすることができます。

re = /[a-z]\d[sf]\d{2}bscs\d{4}/gi;
于 2012-12-05T20:37:59.897 に答える
0

角かっこで囲む[bscs]必要はありません。角かっこはb、またはsまたはcまたはを意味しsます。「l1s10b」と一致するため、数字がなくても機能しますが、次の文字は数字ではないため、4桁の検索は失敗します。これを試して:

re = /[a-zA-Z]\d{1}[s|S|f|F]\d{2}bscs[0-9]{4}/g;
于 2012-12-05T20:35:51.710 に答える