检查字符串在PHP中是否包含两个单词或带下划线的特殊字符

检查字符串在PHP中是否包含两个单词或带下划线的特殊字符,php,regex,Php,Regex,我需要检查字符串是否包含两个单词中的下划线,也可以是特殊字符: 我正在做的是: preg_match('/^[a-z]+_[a-z]+$/i', $value) 案件审理: mytext_second 案例不起作用: sometext_% 我一直在关注这个问题,但没有为我工作: 有人能帮我吗 谢谢 您需要向字符类添加特殊字符。由于i修饰符,当前只允许使用字符a-z和a-z 要允许%s,它将是: preg_match('/^[a-z%]+_[a-z%]+$/i', $value) 您可以

我需要检查字符串是否包含两个单词中的下划线,也可以是特殊字符:

我正在做的是:

preg_match('/^[a-z]+_[a-z]+$/i', $value)
案件审理:

mytext_second
案例不起作用:

sometext_%
我一直在关注这个问题,但没有为我工作:

有人能帮我吗


谢谢

您需要向字符类添加特殊字符。由于i修饰符,当前只允许使用字符a-z和a-z

要允许%s,它将是:

preg_match('/^[a-z%]+_[a-z%]+$/i', $value)
您可以在此处阅读有关角色类的更多信息。要注意的两个字符是]和-在其中。这些字符应该转义为文字-创建范围,并且]将关闭字符类

可以将任何单个字符添加到字符类中。不能在字符类中对字符进行分组,例如,[the]允许t、h或e而不是单词。[the]也不允许这个词,它也允许s

如果特殊字符是打印ascii字符,您可以执行以下操作:

preg_match('/^[!-~]+_[!-~]+$/', $value);


您需要将特殊字符添加到字符类中。由于i修饰符,当前只允许使用字符a-z和a-z

要允许%s,它将是:

preg_match('/^[a-z%]+_[a-z%]+$/i', $value)
您可以在此处阅读有关角色类的更多信息。要注意的两个字符是]和-在其中。这些字符应该转义为文字-创建范围,并且]将关闭字符类

可以将任何单个字符添加到字符类中。不能在字符类中对字符进行分组,例如,[the]允许t、h或e而不是单词。[the]也不允许这个词,它也允许s

如果特殊字符是打印ascii字符,您可以执行以下操作:

preg_match('/^[!-~]+_[!-~]+$/', $value);


在一个字符类中包括您希望允许的所有字符,而不仅仅是字母。你可以用

^([a-z%]+)_(?1)$

^-启动字符串ancor。 -第一捕获组。 [a-z%]+-至少匹配定义的字符类中的一个字符。 -关闭第一捕获组。 _-匹配文字下划线。 ?1-递归第一个子模式。 $-结束字符串ancor。
在一个字符类中包括您希望允许的所有字符,而不仅仅是字母。你可以用

^([a-z%]+)_(?1)$

^-启动字符串ancor。 -第一捕获组。 [a-z%]+-至少匹配定义的字符类中的一个字符。 -关闭第一捕获组。 _-匹配文字下划线。 ?1-递归第一个子模式。 $-结束字符串ancor。
您需要在正则表达式中添加特殊字符,例如:

$value = 'mytext_%';
preg_match('/^[a-z$&+,:;=?@#|\'<>.^*()%!-]+_[a-z$&+,:;=?@#|\'<>.^*()%!-]+$/i', $value);

您需要在正则表达式中添加特殊字符,例如:

$value = 'mytext_%';
preg_match('/^[a-z$&+,:;=?@#|\'<>.^*()%!-]+_[a-z$&+,:;=?@#|\'<>.^*()%!-]+$/i', $value);
你可以试试下面的代码

$str = 'sometext_%demo';
if (preg_match('/^[a-z]+[_!@#$%^&*(),.?":{}|<>][a-z]+$/i', $str)) {
    // contains an underscore or with special character
} else {
    // does not contain underscore or with special character
}
对于sometext演示示例,这将返回true。

您可以尝试下面的代码

$str = 'sometext_%demo';
if (preg_match('/^[a-z]+[_!@#$%^&*(),.?":{}|<>][a-z]+$/i', $str)) {
    // contains an underscore or with special character
} else {
    // does not contain underscore or with special character
}

对于sometext演示示例,这将返回true。

谢谢,如果有任何其他特殊字符而不是%呢。还可以有$,等等。您需要向字符类添加任何/所有特殊字符。字符类是[]。谢谢,如果有其他特殊字符而不是%呢。还可以有$,等等。您需要向字符类添加任何/所有特殊字符。角色类是[].@MuhammadZahid,你从这个答案中学不到什么:@user3783243,我从你的答案中学到了很多。非常感谢:@MuhammadZahid,你从这个答案中学不到什么:@user3783243,我从你的答案中学到了很多。非常感谢: