2010-04-23 275 views
1

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

此外,如果有人知道如何检查连续没有两个满座,我将非常感激。

我有什么至今:

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

谢谢!

回答

6

可以使用ltrim'

if(ltrim($request) != $request) { // there was whitespace }

+0

我不想取代任何东西。 – ITg 2010-04-23 22:26:23

+0

@ITg - 你没有在这里取代任何东西 - 只是检查一开始是否有空白。 – thetaiko 2010-04-23 22:27:29

+0

他想检查是否没有其他字符,而不是.a-z0-9,而不是在开头没有空格。 – 2010-04-23 22:29:06

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

编辑做到这一点没有正则表达式 - 我误解你的问题。这将检查是否有任何非a-z0-9.字符。

+0

似乎没有工作:/ – ITg 2010-04-23 22:27:05

+0

^inside []是错误的 – 2010-04-23 22:29:37

0

^[]内否定characers(变化意为“除这些任何字符”)

^的[]表示“字符串的beggining”外部(与$表示“字符串的末尾”)

所以你需要类似的东西:

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

如果要排除你需要的东西有点复杂点的序列,但不单独点:

preg_match('/^([a-z0-9]|(?<!\\.)\\.)+$/', $request);

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 

匹配

  • ​​
  • "abc123"
  • "abc.123"

失败

  • " abc"
  • "abc..123"
  • "abc!"
+0

if((!!^ ^^^。* \。{2,}。* $)[a-z0-9。] + $ /“,$ request))&&(ltrim($ request)== $ request)){ return true; } 作品如何我想 – ITg 2010-04-23 22:34:35

+0

我给了最低'积分?'的正确答案。两个有用的答案:)谢谢! – ITg 2010-04-23 22:37:04

+0

@ITg:你对没有回答你问题的人给出了“正确答案”。我的答案检查连续没有两个满座,另一个没有。 – Tomalak 2010-04-23 22:41:23