使用preg_match帮助Regex

时间:2010-08-20 13:40:13

标签: php regex preg-match

最近我已经切换到PHP 5.3+并且在迁移之后我了解到eregi()函数已被折旧,它主要用于我的正则表达式所需的函数。

但是现在我不得不切换到preg_match()函数,我无法验证某个条件。

Hello World

我希望preg_match验证上面的“hello world”字符串,该字符串中包含空格。

但我希望它能够验证即使没有空格“helloWorld”或只是“你好”。

我想要做的是在我的脚本中我有一个类别标题的文本字段,我希望它接受其中的空格而没有其他特殊字符(例如._- + *,)。

我已经让它发挥作用,但我不确定这是否是我正在使用的正确方式。

preg_match('/^[a-zA-Z0-9\s]*$/', $cat_name);'

任何帮助都将不胜感激。

4 个答案:

答案 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还允许其他空格字符,如制表符或换行符。