gpt4 book ai didi

regex - 字母、数字和 - _ 的正则表达式

转载 作者:行者123 更新时间:2023-12-03 05:09:23 25 4
gpt4 key购买 nike

我在检查 PHP 中的值是否为以下任意组合时遇到问题

  • 字母(大写或小写)
  • 数字 (0-9)
  • 下划线(_)
  • 破折号 (-)
  • 点(.)
  • 没有空格!或其他字符

一些例子:

  • 确定:“screen123.css”
  • 确定:“screen-new-file.css”
  • 确定:“screen_new.js”
  • 不正常:“屏幕新文件.css”

我想我需要一个正则表达式,因为当给定字符串中包含除上述字符之外的其他字符时,我需要抛出错误。

最佳答案

您想要的模式类似于 ( see it on rubular.com ):

^[a-zA-Z0-9_.-]*$

说明:

  • ^ 是行 anchor 的开头
  • $ 是行 anchor 的结尾
  • [...] 是字符类定义
  • * 是“零个或多个”重复

请注意,文字破折号 - 是字符类定义中的最后一个字符,否则它具有不同的含义(即范围)。 . 在字符类定义之外也有不同的含义,但在内部,它只是一个文字 .

引用文献

<小时/>

在 PHP 中

以下代码片段展示了如何使用此模式:

<?php

$arr = array(
'screen123.css',
'screen-new-file.css',
'screen_new.js',
'screen new file.css'
);

foreach ($arr as $s) {
if (preg_match('/^[\w.-]*$/', $s)) {
print "$s is a match\n";
} else {
print "$s is NO match!!!\n";
};
}

?>

上面的打印内容 ( as seen on ideone.com ):

screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!

请注意,模式略有不同,使用 \w 代替。这是“单词字符”的字符类。

API 引用

<小时/>

规范说明

这似乎遵循您的规范,但请注意,这将匹配 ..... 等内容,这可能是也可能不是您想要的。如果您可以更具体地说明要匹配的模式,则正则表达式会稍微复杂一些。

上面的正则表达式也匹配空字符串。如果您需要至少一个字符,请使用 +(一个或多个)而不是 *(零个或多个)进行重复。

无论如何,您都可以进一步阐明您的规范(在询问正则表达式问题时总是有帮助),但希望您也可以根据上述信息学习如何自己编写模式。

关于regex - 字母、数字和 - _ 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3028642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com