2016-12-02 5 views
0

私は、これらの形式を受け入れますHTMLの電話番号のパターンを持っている:無効な正規表現:ローンの数量詞ブラケット

+61 x xxxx xxxx, 
+61xxxxxxxxx, 
0x xxxx xxxx, 
0xxxxxxxxx, 
xxxx xxxx, 
xxxxxxxx, 
+xx xxx xxx xxx, 
+xxxxxxxxxxx, 
0xxx xxx xxx, 
0xxxxxxxxx 

それは今、急に自分の携帯電話のフィールドは、検証されていない、数ヶ月前に働いていました。このエラーが発生しました:

Pattern attribute value ^(?:0|\(?\+61\)?\s?|0061\s?)[1-79](?:[\.\-\s]?\d\d){4}|(\d{4}[\s]\d{4})|(\d{8})|(\d{4}[\s]\d{3}[\s]\d{3})|(\+61\[\s]\d{3}[\s]\d{3}[\s]\d{3})|(\+61\s\d{3}\s\d{3}\s\d{3})$ is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /^(?:0|\(?\+61\)?\s?|0061\s?)[1-79](?:[\.\-\s]?\d\d){4}|(\d{4}[\s]\d{4})|(\d{8})|(\d{4}[\s]\d{3}[\s]\d{3})|(\+61\[\s]\d{3}[\s]\d{3}[\s]\d{3})|(\+61\s\d{3}\s\d{3}\s\d{3})$/: Lone quantifier brackets 
+1

それはまさにそれが意味するものです。この正規表現は有効ではありません。 – nicovank

+0

ええ、正規表現には明確な問題があります。正規表現の作成とテストのセマンティクスに精通していない場合は、expressoのようなツールを使用することを強く推奨します(http://www.ultrapico.com/Expresso.htm)。正規表現をビルドしてテストします。 –

+0

視覚化を見て、それが有効でないことがはっきりと分かる - https://regexper.com/#%5E(%3F%3A0%7C%5C(%3F%5C%2B61%5C)%3F%5Cs %5F%5F%5F%5F%5F%5F%5Cd%5F%5F%5F%5F%5F%5F%5F% 5Cd%7B4%7D)%7C%5Cd%7B4%7C%5Cd%7B4%7D%5B%5Cs%5D%5Cd%7B3%7D%5B%5Cs 5D%5Cd%5B%5C%5B%5Cs%5D%5Cd%7B3%7D%5B%5Cs%5D%5Cd%7B3%7D%5B%5Cs%5D%5Cd %7B3%7D)%7C%5C%2B61%5Cs%5Cd%7B3%7D%5Cs%5Cd%7B3%7D%5Cs%5Cd%7B3%7D%24 –

答えて

0

つまり、パターンが正しくありません。

あなたはオーストラリアからの電話を一致させたい場合は、あなたが使用できます。

pattern="^(?:0|\(?\+61\)?\s?|0061\s?)[1-79](?:[\.\-\s]?\d\d){4}$" 

パターンがhereを発見しました。

例: https://jsfiddle.net

0

はこれまでのところ、誰もあなたのパターンにエラーがどこにあるかを示すために世話をしていません。そこ

…|(\+61\[\s]\d{3}[\s]\d{3}[\s]\d{3})|(\+61\s\d{3}\s\d{3}\s\d{3})$ 
    ^

が誤ってあなたはそれ通常の文字作り、閉じ括弧Loneを残して、開口部ブラケットをエスケープ、バックスラッシュを挿入します。 (悲しいことに、これらの括弧はもちろんquantifier bracketsではないので、エラーメッセージはやや誤解を招きます。

関連する問題