检查字符串开头的空格

时间:2010-04-23 22:13:22

标签: php validation

我需要使用preg_match来检查只有a-z0-9。使用(包括句号(。))。我不想替换任何东西。我的问题是它没有注意到字符串开头的空格。

另外,如果有人知道如何检查连续没有两个句号,我将非常感激。

到目前为止我所拥有的:

("/[^a-z0-9.]+$/",$request)

谢谢!

4 个答案:

答案 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);