-1

我正在寻找一种正则表达式解决方案,它可以检查字符串是否包含下划线___

/[a-z]/不起作用,也不起作用[^_]

4

4 回答 4

2

要检查字符串是否有下划线,您可以简单地使用 -_+

要检查字符串是否有字母或数字,请使用[a-zA-Z0-9]+

你已经半回答了自己的问题。Anway 很容易找到,您应该在此处发布问题之前进行一些研究。

一切都是关于将字符放入正则表达式类中,由 [] 定义,并为此类提供“+”,这意味着一个或多个。

您还可以使用 or 运算符,即|

/^(_+|[a-zA-Z]+|[0-9]+)$/

演示

于 2013-07-10T14:22:47.260 回答
2

只有下划线?尝试这个:

/^_+$/

这将匹配由一个或多个下划线组成的字符串。它不会匹配空字符串。

于 2013-07-10T14:25:41.963 回答
1

要检查字符串是否仅包含下划线:

if (strspn($str, '_') == strlen($str)) {
    // only underscores
}

也可以看看:strspn()

理论上,空字符串也只包含下划线;如果这是不可取的,您还需要检查是否strlen($str)为非零。

于 2013-07-10T14:26:10.103 回答
0

像这样的东西可能会做到这一点。正则表达式检查您是否有任何其他字符,并且 trim 只检查下划线

if( !preg_match("/[^0-9a-z\_]/si", $string) && trim($string,"_")!=""){
    // Code here
}

你已经改变了你的帖子。你可以做这些

if( trim($string,"_")=="") ){ /* _ only */ }
if( str_replace("_", "", $string)=="") ){/* _ only */}
if( !preg_match("/^_/si", $string) ){/* _ only */}
于 2013-07-10T14:22:50.327 回答