匹配不完整标签的正则表达式$ tagname $
我在javascrip中有一个小的模板系统,用户可以在这个表格中放置标签$ tagname $。我可以将所有标签与模式匹配:/\ $ \ w + \ $/。
另外,我想特别不完全匹配标签(它将开始与$,并用一个单词边界,是不是$完成)。我不能使用/\ $ \ w + \ b/,因为$也是一个字边界(所以它也会匹配正确的标签)。我尝试过,但它不起作用:/\ $ \ w + [^ \ $]/。
它在这串“字$标签任何词”不完全标签匹配,但它也能够匹配这个“字$标签$任何词”。
正常表达的正确结局是什么?
如果你想专门匹配不完整的标签,你可以使用负前瞻:
\$\w+(?![$\w])
但它可能是更有效地使用托默勒格的正则表达式和单独做检查,看其是否与$
结束。或捕捉(可选)结束$
这样的:
\$\w+\b(\$?)
如果#1组包含一个空字符串,这是一个不完整的标签。
我还不够清楚,我想特别匹配不完整的标签,所以这个技巧。 – Nachocual 2010-09-10 15:58:40
\$\w+\b\$?
你试试\$\w+[^\$]
没有因为[^\$]
必须匹配的东西,而\$?
比赛可选工作。那么,因为你没有定义字边界的位置。
此外,在字符类中转义$
不是必须的,这是同样的事情:[^$]
。
因此,如果$被视为字边界,为什么不只是这样做:\$\w+\b
?否则,只要使用\$\w+[\$\b]
,我想,即使这是多余的。
' \ $ \ w + [\ $ \ b]'不起作用;在字符类中,'\ b'匹配退格,而不是字边界。 – 2010-09-10 01:56:08
当我读到“..incomplete tags”时,我感到一种冲动的冲动,引用bobince的“如何(不)用正则表达式解析html”的回复:D – jrharshath 2010-09-09 22:38:10
哈哈我记得当我发布这个问题时 – Nachocual 2010-09-10 15:56:12