我希望正则表达式清理我应该满足以下条件的数据
a) a-z and A-Z allowed
b) 0-9 allowed
c) Special Symbols like Comma (,) dot (.) question Mark (? allowed)
d) Single Space is allowed
我试过了,想出了这个
preg_replace('%[^a-zA-Z0-9,.?\s]%', '', $string);
我对RegExp并不熟悉,虽然上面的代码有效,但我想知道
a)如果我使用正确的RegExp 语法?
b)如果我不使用
modulus(%)
它不会的语法的开始和结束 工作,我不知道是什么 模数的目的在这里?
答案 0 :(得分:2)
如果您要求允许任何单个空白(包括空格,换行符,水平制表符,垂直制表符,换页符等),那么您的正则表达式是正确的。但是,如果您只想允许空格,请将\s
更改为。
preg_replace
调用将从输入中删除所有不允许的字符。
%
调用中的preg_replace
用作正则表达式分隔符。 preg_
函数族期望正则表达式位于一对分隔符中。 My answer here talks more on what can be used as delimiters
答案 1 :(得分:1)
a)如果有效,那是正确的。
b)“当使用PCRE函数时,要求模式由分隔符括起来。分隔符可以是任何非字母数字,非反斜杠,非空白字符” - 来自PHP Documentation
答案 2 :(得分:1)
\ s是一个空格字符。其中包括标签。
另外,如果你可以允许下划线,\ w可能会让它更简单
\w = [a-zA-Z0-9_] // \w is a "word" character (including underscores)
答案 3 :(得分:0)
您需要转义点,逗号和问号
[^a-zA-Z0-9\,\.\?\s]