Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于排除不同字符的Javascript和PHP正则表达式_Javascript_Php_Regex - Fatal编程技术网

用于排除不同字符的Javascript和PHP正则表达式

用于排除不同字符的Javascript和PHP正则表达式,javascript,php,regex,Javascript,Php,Regex,我想使用PHP函数preg_match和JS函数test排除带有以下字符的字符串:|、+、-、=、!=,(,),%* 你能给我这个表达式的正确模式吗 现在我使用这个解决方案: pattern = /[+|=|<|>|(|)|%|*]/; if( pattern.test(mystring) ) { alert(.....); } pattern=/[+|=| |(|)、|%|*]/; if(模式测试(mystri

我想使用PHP函数preg_match和JS函数test排除带有以下字符的字符串:|、+、-、=、!=,(,),%*

你能给我这个表达式的正确模式吗

现在我使用这个解决方案:

    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(...);
}