2015-06-01 53 views
-1

我想匹配一個單詞和它後面的0個或多個字母。我已經構建了以下RegExp/test\w*/
\w對於任何字母,*爲零或更多匹配。
但它工作不正確。它匹配測試測試,但不是測試本身。 這裏是我使用的測試代碼:*登錄正則表達式部隊匹配一個字母

console.log(new RegExp("test" + "[\\w*]").test("tests")); // true 
console.log(new RegExp("test" + "[\\w*]").test("test")); // false - should be true 
console.log(new RegExp("test" + "[\\w*]").test("test-")); // false 
console.log(new RegExp("test" + "[\\w*]").test("testing")); // true 
console.log(new RegExp("test" + "[\\w*]").test("[email protected]")); // false 

更新 表達工程完全按照我regexr.com

+1

Downvoter,評論請! – iamawebgeek

+0

@Kobi,它會給我什麼? – iamawebgeek

+1

因爲我討厭選民,所以對投票絕對沒有建設性。 –

回答

2

*括號裏面想不會手段0以上,它的字面char *進行匹配。 編輯:如果你不想匹配像"test-"的話,使用字符串錨$像這樣的結尾:

console.log(new RegExp("test" + "\\w*$").test("test")); 

解釋爲什麼你的正則表達式失敗:

console.log(new RegExp("test" + "[\\w*]").test("test")); 

表示:匹配單詞測試,那麼任何字符是\w或字符*,這就是爲什麼其他情況匹配和「測試」不匹配,所以你的正則表達式將匹配"test*"例如。

+0

它匹配我輸入的所有內容 – iamawebgeek

+0

你可以給我一個例子,它不匹配這裏的所有內容 –

+0

更改我在代碼中給出的所有示例。它應該完全一樣,除了第二個,應該是對的 – iamawebgeek

0

\w*是你的意思是:0個或多個字母。
然而,[\w*]表示\w或(轉義字符)*

退房的bracket expression[])定義

+0

我知道它,但我沒有其他想法留在我的腦海裏。羅德里戈洛佩斯促使我說我缺少'$'字符來結束比賽。 – iamawebgeek

相關問題