我正在寻找一个正则表达式来检查字符串是否仅由字母 a-z、数字、下划线 (_
) 和连字符 (-
) 组成。我试过这个,但它不起作用:
if (!preg_match('/^a-zA-Z0-9_-$/', $string)) {
$reg_Error[] = 2;
}
另外,我可以用正则表达式检查长度吗?如果没有,我就用 PHP 来做。
最佳答案
您必须将正则表达式 /^a-zA-Z0-9_-$/
放入字符类 /[...]/
中。
这意味着您可以匹配字符类中的任何 字符。您还应该指定一个量词,因为 /^[a-zA-Z0-9_-]$/
将只匹配一个字符。
例子:
/^[a-zA-Z0-9_-]+$/
与 +
符号匹配一次或多次
/^[a-zA-Z0-9_-]{1,}$/
同上
/^[a-zA-Z0-9_-]{10,20}$/
长度在 10 到 20 个字符之间。
/^[a-zA-Z0-9_-]{15}$/
它的长度必须恰好 15 个字符。您可以使用它来检查字符串长度。
您还可以使用以下关键字使您的正则表达式易于阅读:
/^[\w-]+$/
匹配单词字符(包括下划线、字母和数字)或破折号,一次或多次。
关于php - 需要一个正则表达式来检查字符串是否只包含字母 a-z 和数字以及下划线 (_) 和连字符 (-),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1222752/