用于排除不同字符的Javascript和PHP正则表达式
我想使用PHP函数preg_match和JS函数test排除带有以下字符的字符串:|、+、-、=、!=,(,),%* 你能给我这个表达式的正确模式吗 现在我使用这个解决方案:用于排除不同字符的Javascript和PHP正则表达式,javascript,php,regex,Javascript,Php,Regex,我想使用PHP函数preg_match和JS函数test排除带有以下字符的字符串:|、+、-、=、!=,(,),%* 你能给我这个表达式的正确模式吗 现在我使用这个解决方案: pattern = /[+|=|<|>|(|)|%|*]/; if( pattern.test(mystring) ) { alert(.....); } pattern=/[+|=| |(|)、|%|*]/; if(模式测试(mystri
pattern = /[+|=|<|>|(|)|%|*]/;
if( pattern.test(mystring) )
{
alert(.....);
}
pattern=/[+|=| |(|)、|%|*]/;
if(模式测试(mystring))
{
警惕(……);
}
但如果我使用:
pattern = /[+|=|<|>|(|)|%|*|--|!=]/;
if( pattern.test(mystring) )
{
alert(....);
}
pattern=/[+|=| |(|)|%|*|--|!=]/;
if(模式测试(mystring))
{
警惕(……);
}
因为它不接受单数的-或 您需要使用反斜杠转义特殊字符(例如,括号)。首先,如果您使用的是
[]
,则不需要
——方括号表示与其中任何一个字符匹配
要包含-
,只需引用\
:
var pattern = /[+=<>()%*\-!=|]/;
您的模式在这两种情况下都不正确。如果要使用正则表达式测试包含这些字符的字符串,只需使用
[+=()|&!*-]
。这就是你写一个字符组的方式——你不需要在每个字符之间加条。如果您希望您的组包含-
,请始终将其放在最后(否则它可能会被混淆为字符范围的一部分,如a-z
或0-9
)。对于您想要的JavaScript/[+=()%*.]=|-{2} /
,用法:
new RegExp(/[+=<>()%*|]|!=|-{2}/).test('this!=that');
preg_match('/[+=<>()%*|]|!=|-{2}/','this!=that');
PHP:
$pattern='/[+=()%*|]|=|-{2}/';
if(preg_匹配($pattern,$mystring))
{
var_dump(…);
}
奖励:看看哪些字符需要转义,在什么上下文中转义——在你的例子中,没有一个,但仍然是一个方便的参考 请稍等!此模式排除了单数-或!。这对我来说是不正确的me@GabrieleMandalari哦,很抱歉;我误解了。如果需要排除多字符模式,则必须不同。我会改变答案。任何时候你觉得被RegEx卡住了,就去做一些练习和复习。非常感谢!它起作用了!但是您忘记了我想排除字符“|”,现在这是解决方案,多亏了您的建议:pattern=/[+=()%*\\\\;]|=|-{2}/;@加布里埃曼达拉里啊!我在character类中添加了
|
。无需使用\
转义它。只有^-]\
必须在[]
内转义。
preg_match('/[+=<>()%*|]|!=|-{2}/','this!=that');
var pattern = /[+=<>()%*|]|!=|-{2}/;
if( pattern.test(mystring) )
{
console.log(...);
}
$pattern = '/[+=<>()%*|]|!=|-{2}/';
if ( preg_match($pattern,$mystring) )
{
var_dump(...);
}