2013-05-09 31 views
0

我正在使用Javascript正則表達式,但這與我對其工作原理的理解相沖突。與Javascript正則表達式的理解發生衝突

表達是這樣的:/^[0-9]+$/

所以,如果我考這個正則表達式,說一個文本框的值,我的理解是,它會檢查值是否與至少一個數字開始,以至少一位數字結束。然而,現在發生的情況是,只有當整個數值是數字時,測試纔會成功。如果我在兩者之間放置一個字母表,我知道應該使測試成功,但後者失敗。

任何人都可以在此澄清我嗎?謝謝。

回答

3

是的,它表示從開始到結束的一系列一個或多個數字。

^[0-9].+[0-9]$ 

會讓你瞭解它在做什麼。

+0

好了,所以它不檢查數字在開始和結束時分別,而是'從開始到結束'? – 2013-05-09 22:44:00

+0

不,這意味着在行首,應該有一個或多個數字字符,然後應該有行結尾 – 2013-05-09 22:45:48

+0

啊!好的!謝謝。 – 2013-05-09 22:48:40

1

你表達/^[0-9]+$/說...

  • ^說: 「開始的字符串的開頭」
  • [0-9]說: 「匹配字符串必須在下一個包含許多」
  • +說,「該數字可以重複任意次數,但必須至少出現一次「
  • $說,」該字符串必須結束「

既然你沒有指定中間可能有字符或任何東西,你的正則表達式就不會匹配它。如果你想「打頭的編號和數字結尾」嘗試...

/^[0-9](.*[0-9])?$/它說

  • ^開始在字符串的開頭
  • (啓動組 - 但忽略此現在...它會變得明顯後
  • [0-9]後跟數字
  • .後跟任意字符
  • *讓「任何字符」指定前夕重複零次或多次
  • [0-9]後跟數字
  • )?但允許「任何字符後跟一個數字」存在或不存在。這允許我們只有一個數字作爲匹配字符串。
  • $和結束串

或者你可以使用/^[0-9]([0-9a-zA-Z]*[0-9])?$/如果要限制對數字和字母