2016-04-02 7 views
0

pluginが、私は単一の文字列をチェックしたときに、私はそうのようなデータ検証のための正規表現を使用することができます:大文字小文字を区別しない(なしリテラル表記)である複数の文字列のためのJavaScript正規表現

<input type="text" data-validation-regexp="^\s*[Rr][Ee][Dd]\s*$" data-validation="custom"> 

正規表現は、この形式をとりますHave HTML5's a inputs pattern attribute ignore case

プラグインの状態:

このプラグインはまた、HTML5 0123を使用することにより、属性「パターン」をサポートしていますので、以下の理由のモジュール。 MDN

パターンで述べたように

- コントロールの値を照らしてチェックされていることを正規表現。パターンは、一部の サブセットではなく、値全体と一致する必要があります。 title属性を使用して、 ユーザを支援するパターンを記述します。この属性は、type属性の値が のテキスト、検索、tel、url、電子メールまたはパスワードである場合に適用されます。それ以外の場合は無視されます。 正規表現の言語はJavaScriptのと同じです。 パターンはスラッシュで囲まれていません。

data-validation-regexp属性でこの正規表現は/red/i

でそのリテラル表記/フォーマットに代わるものですこれが問題を提起書くための任意の代替方法があります。

/(rot|rouge|red|rojo)/i 

私が欲しいです文字列の腐敗、ルージュ、赤またはロホをチェックする。しかし、ではなく、の文字表記/書式では大文字小文字の区別がなく、文字列の両側にスペースがあります。したがって、これらの文字列のいずれかが存在する場合、正規表現は「通過する」。 (私は複数の実験の後にこれを実装するのに苦労しており、助けに大いに感謝するでしょう)。

https://regex101.comでテストされた場合、正規表現/(rot|rouge|red|rojo)/iはPCRE(PHP)で動作しますが、JavaScriptの代替案を見つける必要があり、OR演算子を使用する可能性があります。

+1

インライン修飾子を使用し、 '' –

+0

は、どのように私は上記の場合にnoneリテラルの表記のことをしてください実装するでしょう(私?)? – user1554264

+0

http://stackoverflow.com/a/20829713/29157 –

答えて

0

トライを生成した3つのツリーを使用できます。
文書全体が文字列と一致するように見えます。
大文字と小文字を区別しない場合は、インライン修飾子(?i)を使用するか、
のオプション属性(regexoptions.case_insensitive)を使用してください。拡張

^(?i).*(?:^|\s)(?:r(?:ed|o(?:jo|t|uge)))(?!\S).*$

^
(?i) 
.* 
(?:^| \s)  # Whitespace or beginning of string (JS, no lookbehind assertions) 
(?: 
     r 
     (?: 
      ed 
     | o 
      (?: jo | t | uge) 
    ) 
) 
(?! \S)   # Whitespace boundary 
.* 
$ 
関連する問題