使用Preg Match检查字符串是否包含下划线

时间:2014-03-27 16:01:38

标签: php regex preg-match

我正在尝试检查字符串是否包含下划线 - 任何人都可以解释以下代码的错误

    $str = '12_322';
    if (preg_match('/^[1-9]+[_]$/', $str)) {
       echo 'contains number underscore';
    }

2 个答案:

答案 0 :(得分:6)

在正则表达式中[_]$表示下划线位于字符串的末尾。这就是为什么它与你的不匹配。

如果您只想检查字符串中任何位置的下划线检查,那么:

if (preg_match('/_/', $str)) {

如果要检查字符串必须包含数字和下划线,那么

if (preg_match('/^[1-9_]+$/', $str)) {  // its 1-9 you mentioned

但是对于您的样本输入12_322,这个也很方便:

if (preg_match('/^[1-9]+_[1-9]+$/', $str)) {

答案 1 :(得分:1)

您需要取出$,因为下划线不是输入中的最后一个字符。你可以试试这个正则表达式:

'/^[1-9]+_/'

PS:下划线不是特殊的正则表达式字符,因此不需要在字符类中。