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万次以上:)