2013-05-09 28 views
6

當我到達頭馬時,我正在維護一些舊代碼。我很困惑這個正則表達式模式:/^.*$/(作爲參數在textFieldValidation(this,'true',/^.*$/,'',''提供)。

解讀此正則表達式爲:

  • /^ =開放圖案
  • =匹配任何值(除EOL)的一個單獨的字符
  • * =匹配0次或多次
  • 。 $ =該行的比賽結束
  • /=關閉模式

所以...我想這拍燕鷗匹配一切,這意味着該功能只會浪費處理週期。我對麼?

+0

我的程序員感官刺痛,五paramerts在JavaScript功能,並且他們中的一個是''true''。這不可能是好 – NicoSantangelo 2013-05-09 19:57:39

+0

@NicoSantangelo:這很可怕 – 2013-05-09 20:03:09

回答

5

其單個文本行相匹配。

它將無法匹配多行字符串,因爲^匹配輸入的開頭,並且$匹配輸入的結尾。如果有任何新行(\n)或插入符號(\r)之間的符號 - 它會失敗。例如,'foo'.match(/^.*$/)返回foo

但是'foo\nfoo'.match(/^.*$/)返回null

+0

請注意,它也將無法匹配包含'\ r'的字符串。 – 2013-05-09 19:52:33

+0

謝謝,更正 – 2013-05-09 20:06:03

+0

謝謝奧列格... – 2013-05-09 20:16:07

1

是的,你是非常正確的。此正則表達式匹配任何不包含EOL的字符串(如果dotall = false)或任何字符串(如果dotall = true)

+1

我不認爲JS有dotall。 – 2013-05-09 19:43:16

+0

我不知道如何在JS中實現正則表達式,但在其他語言中dotall可以使用/../s或將標誌傳遞給編譯函數 – Maxim 2013-05-09 19:45:46

+0

是的,JS沒有/ s標誌。 – 2013-05-09 19:47:04

5

^「從頭開始」。
.「匹配任何東西......」
*「0或多次」
$「到行的末尾。」

是的,你是對的,匹配空或什麼的。

而且a handy little cheat sheet.

5

正則表達式檢查字符串是否不包含任何\n\r。點不符合新行。

實例:

/^.*$/.test(""); // => true 
/^.*$/.test("aoeu"); // => true 
/^.*$/.test("aoeu\n"); // => false 
/^.*$/.test("\n"); // => false 
/^.*$/.test("aoeu\nfoo"); // => false 
/^.*$/.test("\nfoo"); // => false 
+0

謝謝Florian ... – 2013-05-09 20:15:48

相關問題