我需要使用preg_match
来检查只有a-z0-9。使用(包括句号(。))。我不想替换任何东西。我的问题是它没有注意到字符串开头的空格。
另外,如果有人知道如何检查连续没有两个句号,我将非常感激。
到目前为止我所拥有的:
("/[^a-z0-9.]+$/",$request)
谢谢!
答案 0 :(得分:6)
您可以使用ltrim'
if(ltrim($request) != $request) { // there was whitespace }
答案 1 :(得分:1)
/^(?!.*\.{2,}.*$)[a-z0-9.]+$/
解释
^ # start-of-string anchor (?! # begin negative look-ahead ("a position not followed by...") .* # anything \.{2,} # a dot, two times or more .* # anything $ # the end of the string ) # end negative lookahead [a-z0-9.]+ # a-z or 0-9 or dot, multiple times $ # end-of-string anchor
匹配
"abc"
"abc123"
"abc.123"
失败
" abc"
"abc..123"
"abc!"
答案 2 :(得分:0)
("/[^a-z0-9.]/",$request)
编辑 - 我误解了你的问题。这将检查是否存在任何非a-z0-9.
个字符。
答案 3 :(得分:0)
^ inside []否定了characers(更改意味着“除了这些之外的任何char”)
在[]之外的表示“字符串的开头”(与$表示“字符串的结尾”相同)
所以你需要这样的东西:
("/^[a-z0-9.]+$/",$request)
如果你想排除点序列而不是单点,你需要更复杂的东西:
preg_match('/^([a-z0-9]|(?<!\\.)\\.)+$/', $request);