2012-08-01 110 views
0

我試圖做一個正則表達式來驗證這個模式:正則表達式空單

這是一個文本
[文字] [單個空格] [文字] [單個空格] [文字] [單個空格] [文字] 以個人名字命名
威廉史密斯
[文字] [單個空格] [文字]
另一個文本 [文字] [單個空格] [文字] [單個空格]

的圖案將包含下一個規則:

  • 不與任何空間啓動
  • 該字符串可以在字符串的末尾包含的詞或一個單一的空間之間只是一個單一的空間

我有這樣的正則表達式

/^ [A-ZA-Z0-9] + \ s?[A-ZA-Z0-9] *] {0,10} $/

但我不知道如何重複的模式,使其長度的10

**編輯**

爲了更容易理解的,我工作的一個jQuery插件,綁定按鍵事件到一個輸入文本元素,然後添加一個表達式來驗證每個鍵是否按下了文本,就像是一個被掩蓋的文本框,所以爲一個只接受字母數字字符的掩碼應用規則,並且我需要這些單詞之間的空格表達式驗證每個按鍵像這樣按下

T
Th


該I
這是
這是
這是一個
這是一個
這是在
這是一個TE
這是一個特
這是一個文本

+1

你是什麼意思'[TEXT]'?它應該永遠是一樣的,重複自己?或者是什麼限定了「文本」? – Bergi 2012-08-01 20:05:59

+0

你能重新說出你的問題嗎?我無法理解你的問題... – alinsoar 2012-08-01 20:06:32

+0

我已經根據[@ DragoonWraith](http://stackoverflow.com/users/778430/dragoonwraith)的迴應找到了我需要的表達式:'/^[(a-zA -Z01-9)\ s?] {0,10} $ /' – 2012-08-01 21:45:23

回答

1

OK,很好,我想已經正確地理解需求。

首先,這一個字,接着一個空格匹配:

/[a-zA-Z01-9]+/

這時我們就需要重複10次,對不對?從一開始?

/^([a-zA-Z01-9]+){10}/ 

但是尾隨空格是可選的,是嗎?

/^([a-zA-Z01-9]+){9}[a-zA-Z01-9]+ ?$/ 

此外,它可能會更好地使用\w而非[a-zA-Z01-9]。 和\s會匹配任何空格,這可能會比匹配僅有空格。

如果您的意思是高達 10倍,那應該是{0,9}而不是{9}

\w會匹配下劃線,以及各種國際字母,您的原始模式不會。不知道這是故意的,所以我沒有使用它,但如果它不是故意的,那麼\w是一個更好的選擇。

+0

您可以使用單詞字符的'\ w'快捷鍵。 – Bergi 2012-08-01 20:03:53

+0

...這將包括一個下劃線。坦率地說,'\ w'是一個令人傷心的錯誤,只能用於實際使用。 – Joey 2012-08-01 20:04:30

+0

@Bergi:我更喜歡它,但嚴格來說,就像Joey說的那樣,它和'[a-zA-Z01-9]'不一樣,所以我在最後把它作爲一個選項。 – KRyan 2012-08-01 20:08:42

1

使用groups(與())而不是character class分隔符([])到組的表達是repeated高達十倍:

^\w+(\s\w+){0,9}\s?$ 
+1

您錯過了尾部空格的選項。但無論如何,除此之外,我認爲這是一個更好的模式,我喜歡這些鏈接。 – KRyan 2012-08-01 19:59:06

+0

謝謝,修正了這個問題。 – Bergi 2012-08-01 20:04:20

+0

很酷,現在我可以給你+1。當模式與所要求的模式不匹配時,似乎並不正確,儘管它對所有這些鏈接都是一個很好的答案。 – KRyan 2012-08-01 20:07:45