2010-09-09 49 views
1

我在javascrip中有一個小的模板系統,用戶可以在這個表格中放置標籤$ tagname $。我可以將所有標籤與模式匹配:/\ $ \ w + \ $/

另外,我想特別不完全匹配標籤(它將開始與$,並用一個單詞邊界,是不是$完成)。我不能使用/\ $ \ w + \ b/,因爲$也是一個字邊界(所以它也會匹配正確的標籤)。我嘗試過,但它不起作用:/\ $ \ w + [^ \ $]/

它在這串「字$標籤任何詞」不完全標籤匹配,但它也能夠匹配這個「字$標籤$任何詞」。

正常表達的正確結局是什麼?

+0

當我讀到「..incomplete tags」時,我感到一種衝動的衝動,引用bobince的「如何(不)用正則表達式解析html」的回覆:D – jrharshath 2010-09-09 22:38:10

+0

哈哈我記得當我發佈這個問題時 – Nachocual 2010-09-10 15:56:12

回答

2

如果你想專門匹配不完整的標籤,你可以使用負前瞻:

\$\w+(?![$\w]) 

但它可能是更有效地使用託默勒格的正則表達式和單獨做檢查,看其是否與$結束。或捕捉(可選)結束$這樣的:

\$\w+\b(\$?) 

如果#1組包含一個空字符串,這是一個不完整的標籤。

+0

我還不夠清楚,我想特別匹配不完整的標籤,所以這個技巧。 – Nachocual 2010-09-10 15:58:40

2
\$\w+\b\$? 

你試試\$\w+[^\$]沒有因爲[^\$]必須匹配的東西,而\$?比賽可選工作。那麼,因爲你沒有定義字邊界的位置。

此外,在字符類中轉義$不是必須的,這是同樣的事情:[^$]

0

因此,如果$被視爲字邊界,爲什麼不只是這樣做:\$\w+\b?否則,只要使用\$\w+[\$\b],我想,即使這是多餘的。

+2

' \ $ \ w + [\ $ \ b]'不起作用;在字符類中,'\ b'匹配退格,而不是字邊界。 – 2010-09-10 01:56:08

相關問題