用于匹配$ tagname $形式的不完整标签的正则表达式

时间:2010-09-09 22:35:58

标签: javascript regex

我在javascrip中有一个小模板系统,用户可以在其中放置 $ tagname $ 形式的标签。我可以将所有标签与模式匹配: / \ $ \ w + \ $ /

另外,我想要专门匹配不完整的标签(它将以 $ 开头,并以 $ 的字边界结束)。我不能使用 / \ $ \ w + \ b / ,因为$也是一个单词边界(所以它也会匹配正确的标签)。我试过这个,但它不起作用: / \ $ \ w + [^ \ $] /

它匹配此字符串中的不完整标记“word $ tag any word”,但它也匹配此“word $ tag $ 任何字词”。

正常表达的正确结局是什么?

3 个答案:

答案 0 :(得分:2)

\$\w+\b\$?

您的尝试\$\w+[^\$]不起作用,因为[^\$] 必须匹配某些内容,而\$?可选择匹配。好吧,因为你没有定义单词边界的位置。

此外,在字符类中转义$并非绝对必要,这是同一件事:[^$]

答案 1 :(得分:2)

如果您想特定匹配不完整的标签,可以使用否定前瞻:

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

但是使用Tomalak的正则表达式并进行单独检查以查看它是否以$结尾可能更有效。或者捕获(可选)结尾$,如下所示:

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

如果组#1包含空字符串,那么它是一个不完整的标记。

答案 2 :(得分:0)

因此,如果将$视为单词边界,为什么不这样做:\$\w+\b?否则,我想,只要使用\$\w+[\$\b],即使这将是多余的。