繁体   English   中英

检查字符串是否只包含小写字母和下划线

[英]Check if string contains only lowercase letters and underscores

我想检查给定的字符串是否只包含小写字母和下划线。 它不能包含空格、数字、大写字母或特殊符号/字符。

  • my_name_is_John_Doe = 失败(无大写)
  • my_name_is john doe = 失败(无空格)
  • my_name_is_john_doe = 好的
  • i_am_20_years_old = 失败(无数字)
  • i'm_cool! 失败(没有像这样的字符:."#$%&/,.等)

一条额外规则:没有重音/多字节字母,如äö等。

您可以简单地使用:

/^[a-z_]+$/

有关说明和更多示例,请访问此处

您可以使用preg_match()或非正则表达式方法来删除所有列入白名单的字符并检查是否有剩余字符。

代码:(演示

$strings = [
    'my_name_is_John_Doe',
    'my_name_is john doe',
    'my_name_is_john_doe',
    'i_am_20_years_old',
    "i'm_cool!"
];

foreach ($strings as $string) {
    echo json_encode([
             $string,
             !strlen(ltrim($string, 'a..z_')),
             !preg_match('/[a-z_]*[^a-z_]/', $string)
         ]);
    echo "\n\n";
}

Output:

["my_name_is_John_Doe",false,false]

["my_name_is john doe",false,false]

["my_name_is_john_doe",true,true]

["i_am_20_years_old",false,false]

["i'm_cool!",false,false]

在步骤性能方面,这里是每个提供的示例字符串的工作模式表:

细绳 匹配
/^[a-z_]+$/
不匹配
/[^a-z_]/
不匹配
/.*[^a-z_]/
不匹配
/[a-z_]*[^a-z_]/
my_name_is_John_Doe 13 13 6个 3个
我的名字是约翰·多伊 12 12 7 3个
my_name_is_john_doe 4个 20 23 40
我20岁了 7 7 14 3个
我很酷! 3个 3个 4个 3个

上表纯属学术提供。 在如此小的输入字符串上,任何性能提升或损失对于人类最终用户来说都是无法区分的。 换句话说,此任务不太可能成为您应用程序的性能瓶颈,因此请选择您理解并可以维护的技术。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM