最近我已经切换到PHP 5.3+并且在迁移之后我了解到eregi()函数已被折旧,它主要用于我的正则表达式所需的函数。
但是现在我不得不切换到preg_match()函数,我无法验证某个条件。
Hello World
我希望preg_match验证上面的“hello world”字符串,该字符串中包含空格。
但我希望它能够验证即使没有空格“helloWorld”或只是“你好”。
我想要做的是在我的脚本中我有一个类别标题的文本字段,我希望它接受其中的空格而没有其他特殊字符(例如._- + *,)。
我已经让它发挥作用,但我不确定这是否是我正在使用的正确方式。
preg_match('/^[a-zA-Z0-9\s]*$/', $cat_name);'
任何帮助都将不胜感激。
答案 0 :(得分:4)
看起来不错,但会接受空字符串,因此您可以将*更改为+ 请记住,这个正则表达式可能不会接受语言指定的UTF-8字符。
在手册中查看该评论: http://www.php.net/manual/en/function.preg-match.php#95828
另请注意,某些特定字符经常用于标题中,例如“也许最好允许它。”
答案 1 :(得分:1)
是的,这是正确的方法。您还可以使用不敏感大小写修饰符而不是a-zA-Z
:
preg_match('/^[a-z0-9\s]*$/i', $cat_name);'
您可能想要考虑的一件事是您的正则表达式当前接受空字符串。如果您想确保至少有一个字符,请使用+
代替*
。
答案 2 :(得分:1)
应该可以工作,但你可以用普通空格“”替换\ s,所以它只匹配空格而不是其他空格字符(如制表符)。同时用*替换*,这样就不会占空字符串。
preg_match('/^[a-z0-9 ]+$/i', $cat_name);'
答案 3 :(得分:0)
请注意\ s还允许其他空格字符,如制表符或换行符。