我試圖在一個字符串中找到一個模式,該字符串的值以${
開頭並以}
結尾。花括號之間會有一個詞,但我不知道它是什麼字。寫一個正則表達式模式需要幫助
這是我\$\\{[a-zA-Z]\\}
${a}
作品,但${aa}
沒有。看起來它只是在尋找一個角色。
我不確定我做錯了什麼,或者如何解決它,並會感謝任何人都可以提供的幫助。
我試圖在一個字符串中找到一個模式,該字符串的值以${
開頭並以}
結尾。花括號之間會有一個詞,但我不知道它是什麼字。寫一個正則表達式模式需要幫助
這是我\$\\{[a-zA-Z]\\}
${a}
作品,但${aa}
沒有。看起來它只是在尋找一個角色。
我不確定我做錯了什麼,或者如何解決它,並會感謝任何人都可以提供的幫助。
你靠近!
所有你需要的是使用+
告訴這樣的表達會有一個或多個任何的只是之前(在這種情況下[a-zA-Z]
):我認爲,這將有助於
\${[a-zA-Z]+}
但這不起作用,例如'$ {C-3PO}'值 – MaxZoom
@MaxZoom因爲您使用的是連字符和數字(數字)。指定的範圍是'a'到'z'和'A'到'Z'。這些範圍中沒有連字符或數字。數字可以使用'0-9'添加。連字符可以被添加轉義。整個事情可能看起來像這個'[a-zA-Z0-9 \ - ]'。 –
您需要使用*
(零個或多個)或+
(一個或多個)。所以這[a-zA-Z]
將是[a-zA-Z]+
,意思是一個或多個字母。整個正則表達式將是這樣的:
\$\{[a-zA-Z]+\}
爲什麼downvote?這個答案是正確的,是第一個答案。其他兩個答案基本上是這一個的副本,但是這個答案是downvoted? –
你
var str = "The quick brown ${fox} jumps over the lazy ${dog}";
var re = /\$\{([a-z]+)\}/gi;
var match;
while (match = re.exec(str)) {
console.log(match[1]);
}
點擊運行的代碼片斷並檢查您的開發者控制檯輸出
"fox"
"dog"
說明
+
意味着匹配1個或多個之前的術語—在這個例子中,比賽1個或更多的[a-z]
(...)
圓括號會「捕捉」匹配,所以你可以用它做一些事情—在我的例子中,我只使用console.log
以將其輸出i
改性劑(在正則表達式的結尾)指執行一個區分我 nsensitive匹配g
修飾符意味着匹配在目標串re.exec
找到的每個匹配,while
循環將繼續運行。一旦re.exec
不能匹配另一個實例,它將返回null
並且循環將退出。附加信息
嘗試console.log(match)
使用上面的代碼。每場比賽配備了其他有用的信息,比如字符串索引,這是比賽發生
陷阱
這是行不通的嵌套$ {}套
例如,此正則表達式將而不是工作"The quick brown ${fox jumps ${over}} the lazy ${dog}."
這不適用於大寫字母。除此之外,用戶似乎只是要求正則表達式而不是JS程序。 –
@SpencerWieczorek,我使用'i'修飾符來執行不區分大小寫的匹配。另外,我演示了一個JavaScript程序的用法,以表明'g'修飾符也可能是必需的,否則他可能只會得到一個匹配。在這種情況下,我認爲簡單的程序是有用的,因爲它提供了功能的完整演示。隨着你的回答,他很可能會在短時間內再次陷入死衚衕。 – naomik
如何?我的回答是正確的,並給出了所要求的內容,問題指出只有一個單詞會在'$ {...}'之間,所以你提到的嵌套情況永遠不會發生。你假設OP幾乎什麼都不知道。 –
可能重複的[引用ence - 這個正則表達式是什麼意思?](http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean) –