2010-04-23 118 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