3

複数の条件で JavaScript を使用して文字列を検証する必要があります。正規表現を使用してこれを行う方法がわかりません。

文字列に次の条件が含まれていないかどうかを確認する必要があります

条件 1 : 18XX または 1-8XX または 8XX で始まる任意の長さの文字列。ここで、X は 0 から 9 (0 と 9 の両方を含む) の任意の数値です。例: 1800abc、812abc-def、1-805-999-9999

条件 2 : NXX または 1NXX または 1-NXX で始まり、その後にハイフンを含まない正確に 7 つの数字が続く文字列。ここで、N は 2 から 9 までの任意の数字 (2 と 9 の両方を含む) であり、X は 0 から 9 までの任意の数字です ( 0 と 9 の両方を含む)。例: 12-999-9999、19009998888、1-212---1-2-3-4-5-6-7--

条件 3 : XXXXX で始まる文字列。ここで、X は 0 から 9 までの任意の数字 (0 と 9 の両方を含む) です。例: 20176、90210-メルローズ

4

2 に答える 2

5

単一の正規表現でこれをすべて一致させることはできません。そう かもしれません!! 下記参照

条件ごとにこれら 3 つを使用してみてください。3 つすべてをチェックして、どれにも一致しないものだけを渡します。

条件 1:^1?-?8\d{2}.*$

条件 2:最初にすべてのハイフンを削除してから、^1?[2-9]\d{7}$

条件 3:^\d{5}.*$

お役に立てれば

編集

これに一致する単一の正規表現がある場合があります。オプションの文字のように見えるので、最初にそれらを削除できますが、コメントで@ nnnnn-が指摘したように、文字列が実際に a で始まるかどうかを最初に確認し、文字列がそれ以上のチェックなしで検証に合格します。次に、これら3つをつなぎ合わせて、チェックできる単一の正規表現を形成できます-|

^1?8\d{2}.*|1?[2-9]\d{7}|\d{5}.*

ハイフンをすべて削除-?したので、最初の部分から削除しました。

于 2012-10-23T05:45:44.520 に答える
3

おそらく代替を探しているでしょう: http://www.regular-expressions.info/alternation.html

数字を一致させるには、数字クラス\dまたは単にプレーンを使用できます[0-9]

たとえば、条件 1 の場合、次のように一致させることができます。

 /^18\d\d|1-8\d\d|8\d\d$/.test("1800")  == true
 /^18\d\d|1-8\d\d|8\d\d$/.test("1-800") == true
 /^18\d\d|1-8\d\d|8\d\d$/.test("812")   == true

もちろん、オプションのアイテムグループを使用してスマートに取得して、次のようなものを考え出すことができます。

 /^(1-?)?8\d\d$/.test("1-800") == true

RegexPalなどのツールを使用して、正規表現を試すことができます。私は通常、Chrome Developer Tools コンソールで遊んでいます。

残りは自分で考えてみてください。:)

于 2012-10-23T05:45:37.797 に答える