JavaScriptに登録された名前の正規表現と解析(0ベース)
2895 ワード
簡単に言うと
JavaScriptでは、正規表現を用いてモードマッチングを行うことが多い.例えば、ログイン名の検証、パスワード強度の検証、文字列の検索や置換などが行われます.今から始めましょう.ゼロベースで最初の正規表現を書きます.
ユーザー登録をする時は、登録名の正則チェックが必要です.正しい正規表現を書くには、まず表現規則を定義します.登録名を以下のように定義すると仮定します.最短4位、最長16位{4,16} は、小文字大母[a-z]と大文字[A-Z] を含むことができる.は、数字[0-9] を含むことができる.は、アンダースコア[u]とマイナス記号[-] を含むことができる.
以上の規則により、正規表現の字面量は以下の通りとなります.
テストの結果は以下の通りです.
var pattern=/^[a-zA-Z 0-9_-]{4,16}/;
pattern.test('ift 3')=true
pattern.test('42 du')=true
pattern.test('42 du-')=true
pattern.test('u 42 du')=true
pattern.test('42 d')=false
pattern.test('42 du 42 du 42 du 1')=false
pattern.test('42 du@)=false
テストコード
解析
文字の量//
正規表現の文字数は、ペアのスラッシュ(/)の間に含まれる文字として定義されています.
文字クラス[]
四角い括弧の中に文字を入れると、文字の種類ができます.1つの文字クラスは、その中に含まれる任意の文字にマッチします.したがって、正規表現
文字クラスはハイフンで文字の範囲を表します.ラテン小文字にマッチするには
繰り返します
正規表現では、要素の繰り返しの回数を{}で表します. を超えてはいけない. と一致する. と一致する.
位置合わせ^マッチング文字列の先頭は、複数行の検索で、1行の先頭 に一致します.ドルは文字列の最後にマッチし、複数行の検索では一行の最後に一致する .
拡張1
以上の説明に基づいて、上記の正規表現の意味を理解しました.簡単ではないです.
上記の規則に不満があるなら、次のように規則を追加したいです.首の字母は大文字だけで です.
上記の正規表現を簡単に変更します.
var pattern=/^a-zA-Z{3,15}/;
pattern.test('ift 3')=true
pattern.test('Ifat 3')=true
pattern.test('du 42')=true
pattern.test('42 du')=false
pattern.test('d 42')=false
pattern.test('du 42du 42du 421')=false
pattern.test('du 42@)=false
テストコード
拡張2
中国語の登録名を許可すると、ルールを変更します.首の字母は、大文字または中国語の基本漢字だけです. 他の人も中国語の基本漢字を含めてもいいです.
以下の正規表現を与えます.
テスト結果は以下の通りです.
var pattern=/^a-zA-Zu 4 E 00-u 9 FA 5{3,15}米ドル/
pattern.test('ift 3')=true
pattern.test('Ifat 3')=true
pattern.test('毛三太')=true
pattern.test('42 du')=false
pattern.test('d 42')=false
pattern.test('du 42du 42du 421')=false
pattern.test('du 42@)=false
テストコード
以上の内容に基づいて、あなたの登録名の正規表現を定義しましょう.
原文のリンク
JavaScriptでは、正規表現を用いてモードマッチングを行うことが多い.例えば、ログイン名の検証、パスワード強度の検証、文字列の検索や置換などが行われます.今から始めましょう.ゼロベースで最初の正規表現を書きます.
ユーザー登録をする時は、登録名の正則チェックが必要です.正しい正規表現を書くには、まず表現規則を定義します.登録名を以下のように定義すると仮定します.
以上の規則により、正規表現の字面量は以下の通りとなります.
var pattern = /^[a-zA-Z0-9_-]{4,16}$/
テストテストの結果は以下の通りです.
var pattern=/^[a-zA-Z 0-9_-]{4,16}/;
pattern.test('ift 3')=true
pattern.test('42 du')=true
pattern.test('42 du-')=true
pattern.test('u 42 du')=true
pattern.test('42 d')=false
pattern.test('42 du 42 du 42 du 1')=false
pattern.test('42 du@)=false
テストコード
解析
文字の量//
正規表現の文字数は、ペアのスラッシュ(/)の間に含まれる文字として定義されています.
var pattern = /s$/;
上記の文字列の量は、文字「s」で終わるすべての文字列にマッチします.文字クラス[]
四角い括弧の中に文字を入れると、文字の種類ができます.1つの文字クラスは、その中に含まれる任意の文字にマッチします.したがって、正規表現
/[abc]/
は、アルファベット「a」、「b」、「c」のいずれかに一致する.文字クラスはハイフンで文字の範囲を表します.ラテン小文字にマッチするには
/[a-z]/
を使用することができます.[a-zA-Z0-9_-]
は、任意のラテンの大きさにマッチしてアルファベットを書き、数字に下線とマイナス記号を加えることを表す.繰り返します
正規表現では、要素の繰り返しの回数を{}で表します.
{n,m}
は前のエントリに少なくともn回マッチングしたが、m回{n,}
は、前のn回または複数の{n}
は、前のn回[a-zA-Z0-9_-]{4,16}
は、任意のラテンの大きさにマッチしてアルファベットを書き、数字に下線とマイナス記号を加えて最低4回、最大16回を表示します.位置合わせ
拡張1
以上の説明に基づいて、上記の正規表現の意味を理解しました.簡単ではないです.
上記の規則に不満があるなら、次のように規則を追加したいです.
上記の正規表現を簡単に変更します.
var pattern = /^[a-zA-Z][a-zA-Z0-9_-]{3,15}$/;
テスト結果は以下の通りです.var pattern=/^a-zA-Z{3,15}/;
pattern.test('ift 3')=true
pattern.test('Ifat 3')=true
pattern.test('du 42')=true
pattern.test('42 du')=false
pattern.test('d 42')=false
pattern.test('du 42du 42du 421')=false
pattern.test('du 42@)=false
テストコード
拡張2
中国語の登録名を許可すると、ルールを変更します.
以下の正規表現を与えます.
var pattern = /^[a-zA-Z\u4E00-\u9FA5][a-zA-Z0-9\u4E00-\u9FA5_-]{3,15}$/;
そのうち[\u4E00-\u9FA5]
は漢字の正則マッチングであり、基本漢字2万余りを含む.そのうち\u4E00
は漢字の「一」を表し、具体的には「漢字unicodeコード範囲」を参照してください.テスト結果は以下の通りです.
var pattern=/^a-zA-Zu 4 E 00-u 9 FA 5{3,15}米ドル/
pattern.test('ift 3')=true
pattern.test('Ifat 3')=true
pattern.test('毛三太')=true
pattern.test('42 du')=false
pattern.test('d 42')=false
pattern.test('du 42du 42du 421')=false
pattern.test('du 42@)=false
テストコード
以上の内容に基づいて、あなたの登録名の正規表現を定義しましょう.
原文のリンク