正则表达式只匹配$ -char作为对

时间:2017-12-06 07:24:39

标签: regex

我有以下正则表达式来检查必须以$开头和结尾的字符串:

^[$][\w:$]+[$]$

这适用于以下字符串:

  • $程序hello_world $
  • $ $测试$ 123

现在,我希望正则表达式检查前导$之间是否有$,只有在出现' $' -chars时才允许像夫妻一样:

$你好$测试$ $世界

这没关系。

$你好$ $世界

不应该没问题。

我尝试了以下内容:

^[$][\w:($)\2]+[$]$

但不幸的是,这并没有像预期的那样发挥作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以考虑像

这样的正则表达式
^[$][\w:]+(?:[$][\w:]+[$][\w:]+)*[$]$

请参阅the regex demo

如果$之间的部分可以为空并且$$$$也有效,请在+之后用[\w:]替换*以允许0或更多的部分。

<强>详情

  • ^ - 字符串开头
  • [$] - 一个$符号(在很多情况下,只需写\$\\$
  • [\w:]+ - 一个或多个单词字符或/和冒号
  • (?:[$][\w:]+[$][\w:]+)* - (或(?:(?:[$][\w:]+){2})*)0次重复出现2次:
    • [$] - $ char
    • [\w:]+ - 一个或多个单词字符或/和冒号
  • [$] - $字符
  • $ - 字符串结束。