2017-12-13 11 views
0

パイプ(|)演算子を含むパターンと一致しようとしています。 |Javascriptパターンが一致しません

は、この文字列が含まれていません

var format = /[ \\|]/; // This is the pattern for matching pipe pattern 

if ("Near raghavendra temple ring roads".match(format)) { 
    alert("Invalid character"); 
} 

"Near raghavendra temple ring roads" patteren一致させるために、コードの下に使用しましたオペレーターがまだ真になっていることを示します。

上記のパターンで間違いが何であるか理解できません。

+0

https://regexr.com/3i02n – castis

+0

これまで使用していない場合は、https://regex101.com/で正規表現のパターンの意味を説明することができます。 –

答えて

3

var format = /[\\|]/; // This is the pattern for matching pipe pattern 
 

 
if ("Near raghavendra temple ring roads".match(format)) 
 
    console.log("Invalid character"); 
 

 
else 
 
    console.log('All valid');

あなたはスペース文字に一致しています。問題は、あなたがそこにスペースがあるブラケットに(四角内)正規表現パターンから

0

をスペースを削除します。

/[ \\|]/ 

することは実際には「いずれかのスペース、\または|に一致する」という意味します。あなたがしたいすべてがパイプに一致する場合には

、これを使用します。

const format = /[\|]/; // This is the pattern for matching pipe pattern 
 

 
if ("Near raghavendra temple ring roads".match(format)) { 
 
    console.log("Invalid character"); 
 
} else { 
 
    console.log("Okay"); 
 
}

それはそれが文字列で表示する必要のある方法ですので、あなたは、おそらくダブル\を持っています。しかし、正規表現では、2つの場合、それは\リテラルになります。あなたがただパイプをエスケープしたいのであれば、それを使用してください。

実際には、そのようなセットで、あなたもそれをエスケープする必要はありません。

const format = /[|]/; // This is the pattern for matching pipe pattern 
 

 
if ("Near raghavendra temple ring roads".match(format)) { 
 
    console.log("Invalid character"); 
 
} else { 
 
    console.log("Okay"); 
 
} 
 

 
if ("Bad | character".match(format)) { 
 
    console.log('Bad character'); 
 
}

は個人的に、私はわかりやすくするためにかかわらず、スラッシュを維持したいです。

関連する問題