PHP preg_match - 仅允许字母数字字符串和 - _ 字符

2022-08-30 13:27:55

我需要正则表达式来检查字符串是否仅包含数字,字母,连字符或下划线

$string1 = "This is a string*";
$string2 = "this_is-a-string";

if(preg_match('******', $string1){
   echo "String 1 not acceptable acceptable";
   // String2 acceptable
}

答案 1

法典:

if(preg_match('/[^a-z_\-0-9]/i', $string))
{
  echo "not valid string";
}

解释:

  • [] =>字符类定义
  • ^ =>否定该类
  • a-z =从“a”到“z”的>个字符
  • _ => 下划线
  • - =>连字符“-”(您需要转义它)
  • 0-9 = >数(从 0 到 9)

正则表达式末尾的“i”修饰符用于“不区分大小写”,如果您不这样做,则需要在之前通过执行A-Z在代码中添加大写字符


答案 2
if(!preg_match('/^[\w-]+$/', $string1)) {
   echo "String 1 not acceptable acceptable";
   // String2 acceptable
}

推荐