空格和字母数字的正则表达式是什么?


What is the regular expression for space and alpha-numeric

我使用ajax检查函数来检查插入的类别名称,它应该只有字母数字,也允许空格

我用以下正则表达式[a-zA-Z0-9_]+

使用了这个函数eregi_replace
$check = eregi_replace('([a-zA-Z0-9_]+)', "", $catname);

但是当我插入类别名称时,例如hello world,它失败了,因为它不接受空间,但如果我把它写为helloworld工作,所以我明白错误必须在我使用的正则表达式中。

那么什么是正确的正则表达式,它可以过滤任何特殊字符,只允许字母数字和空格。

Thanks to lot

匹配字母、数字、下划线和空格的字符类为

['w ]

您不应该使用任何POSIX正则表达式函数,因为它们现在已被弃用。相反,请使用来自PCRE套件的高级对应项。

将正则表达式更改为:

([A-Za-z0-9_]+(?: +[A-Za-z0-9_]+)*)
我知道这并不像你所希望的那么简单。注意事项:
  • 标识符必须以非空格
  • 开头。
  • 如果有空格,它们应该在单词之间,并且不匹配在末尾
  • ?:用于防止表达式中额外的分组,但不是必需的
  • 空格后的+允许单词之间有多个空格。您可以通过删除单个空格来强制使用它,但在某些解决方案中,更好的做法是在内部使用与" +"(带有加号的空格)匹配的preg_split对该空间进行规范化,然后使用implode(" ", $array)。但是呃……如果你只是验证,这应该是好的。

你已经做得差不多了,只要在方括号中加上's, "hello world"就会通过了。

[

(- za - z0 - 9 _ ' s] +)

我得到了一些老朋友的帮助,我已经测试和工作完美-感谢所有的答案和评论,这对我很有帮助。

this works perfect

$check = eregi_replace('(^[a-zA-Z0-9 ]*$)', "", $catname);

字母数字加空格正则表达式

@Phil你的工作完美,但仍然会传递下划线~谢谢

@Michael海斯我不知道它没有工作的空白,但你的评论是非常有帮助的~谢谢

@kjetilh我将阅读更多关于$preg的信息~谢谢

@Alastair如果我用空格替换's,效果很好!~谢谢

eregi函数自PHP 5.3起已弃用。