2017-08-27 20 views
1

私はRegular Expression to Validate UK Number Platesを使用しようとしていますが、私はjQueryの公平な塊を知っていますが、私は以前は正規表現を扱っていませんでした。この正規表現を使用して値をチェックするにはどうすればよいですか?

$('button#headerevalsubmit').click(function(){ 
    var headcarreg = $('input#headerevalcarreg'); 
    headcarreg.filter(function() { 
     return this.value.match('(?<Current>^[A-Z]{2}[0-9]{2}[A-Z]{3}$)|(?<Prefix>^[A-Z][0-9]{1,3}[A-Z]{3}$)|(?<Suffix>^[A-Z]{3}[0-9]{1,3}[A-Z]$)|(?<DatelessLongNumberPrefix>^[0-9]{1,4}[A-Z]{1,2}$)|(?<DatelessShortNumberPrefix>^[0-9]{1,3}[A-Z]{1,3}$)|(?<DatelessLongNumberSuffix>^[A-Z]{1,2}[0-9]{1,4}$)|(?<DatelessShortNumberSufix>^[A-Z]{1,3}[0-9]{1,3}$)'); 
    }); 

}); 

しかし、私は無効な式を取得しておくと、私は私の目標は、単にテキストボックスの入力が有効な英国のナンバープレートであるかどうかを確認することである理由を、知りません。

ご協力いただければ幸いです。

+1

あなたはちょうどその正規表現をウェブからどこかにコピーしましたが、実際にはJavaScriptで有効な正規表現のようには見えません – adeneo

+0

JQueryでそれを使用する方法がわからないJavascript:/ – M0n5terBunny

+0

JS正規表現は名前付きグループをサポートしていません。正確に何が必要ですか?グループを削除するだけなら、[this expression](https://regex101.com/r/yQNHbX/4)が手に入ります。それは[ちょっと収縮する](https://regex101.com/r/yQNHbX/3/)かもしれませんが、選択肢の1つと一致する完全な文字列と一致するだけです。それが何であるかを区別することはできません特定のフォーマット。 –

答えて

1

あなたが与えられた英国のナンバープレートが有効であるかどうかをチェック中にだけ興味がある場合は、すべての名前付きキャプチャグループを除去することにより、JavaScriptの正規表現のパターンが互換性を持たせることがあります。

var uk_plate_number = /^(?:[A-Z]{2}[0-9]{2}[A-Z]{3}|[A-Z][0-9]{1,3}[A-Z]{3}|[A-Z]{3}[0-9]{1,3}[A-Z]|[0-9]{1,4}[A-Z]{1,2}|[0-9]{1,3}[A-Z]{1,3}|[A-Z]{1,2}[0-9]{1,4}|[A-Z]{1,3}[0-9]{1,3})$/; 
return uk_plate_number.test(this.value); 

regex demoを参照してください。

このシナリオでは正規表現の構造が変更されているため、acnhorsは繰り返されません。^...$|^...$ =>^(?:...|...)$です。 (?:...)は、代替グループの各代替案に^$を適用する非キャプチャグループです。

+1

ありがとう、完璧に動作します。 – M0n5terBunny

関連する問題