繁体   English   中英

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

[英]Regular expression for matching incomplete tags in the form $tagname$

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

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

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

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

\$\w+\b\$?

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

此外,在字符类中转义$并不是绝对必要的,这是同样的事情: [^$]

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM