Php 字符串是否只包含下划线

Php 字符串是否只包含下划线,php,regex,Php,Regex,我正在寻找一个正则表达式解决方案,它可以检查字符串是否只包含下划线\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu /[a-z]/不起作用,也不起作用。[^\u]要检查字符串是否有下划线,只需使用-+ 要检查字符串是否有字母或数字,请使用[a-zA-Z0-9]+ 你已经半回答了你自己的问题。这很容易找到,你们应该在这里发帖之前做一些研究 一切都是关于将字符放入由[]定义的正则表达式类中,并将“+”赋予该类,这意味着

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


/[a-z]/
不起作用,也不起作用。
[^\u]

要检查字符串是否有下划线,只需使用-
+

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

你已经半回答了你自己的问题。这很容易找到,你们应该在这里发帖之前做一些研究

一切都是关于将字符放入由[]定义的正则表达式类中,并将“+”赋予该类,这意味着一个或多个字符

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

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


像这样的东西可能就行了。正则表达式检查是否有任何其他字符,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 */}

只有下划线?试试这个:

/^_+$/

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

要检查字符串是否只包含下划线,请执行以下操作:

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


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

仅检查规格?没有证据表明你尝试了什么。你的问题和例子相互矛盾。你是否尝试了一个不起作用的正则表达式,或者使用了一个正则表达式?调试总是有助于回答问题。(例如,
[a-Z]
是错误的。它通常会被写入
[a-Z]
,但这仍然是错误的。)是否允许使用其他字符?像破折号、斜杠等?否则,
^.*$
应该匹配一个只包含零个或多个下划线的字符串。@joe776,为此,您甚至不需要正则表达式:)这也将匹配AAA,因为a在您的正则表达式中。解决方法是检查是否有任何不同的字符来检查它们,为什么要使用
+
?@Martijn这将不匹配包含
@PeteBelford的字符串:注意:
\w+
[\w]+
@PeteBelford不,
\w
[a-zA-Z0-9]
;你漏掉了下划线。哦,这是一种有趣的方式。因为这可能是一种糟糕的方式。您正在调用两个函数,每个函数都有开销和执行时间。但是,对不同的标准进行比较是很有趣的methods@Martijn我的答案是快20%=P@Martijn与
preg\u匹配('/^.*$/')相比,$str)
我的答案比
trim()
操作慢9%;当然,在我们所说的规模上,这是非常微不足道的,除非您执行此10万次以上:)