Regex 正则表达式仅成对匹配$-char

Regex 正则表达式仅成对匹配$-char,regex,Regex,我使用以下正则表达式来检查必须以$开头和结尾的字符串: ^[$][\w:$]+[$]$ 这只适用于以下字符串: $Hello_World$ $Test$123$ 现在,我想让正则表达式也检查在开头和结尾之间是否有一个$,$只有在“$”字符以成对形式出现时才允许它,如: $Hello$Test$World$ 这样就可以了 $Hello$World$ 应该不行 我尝试了以下方法: ^[$][\w:($)\2]+[$]$ 但不幸的是,这并不像预期的那样有效 有什么想法吗? < P>你可以考虑一个

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

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

这只适用于以下字符串:

  • $Hello_World$
  • $Test$123$
现在,我想让正则表达式也检查在开头和结尾之间是否有一个
$
$
只有在“$”字符以成对形式出现时才允许它,如:

$Hello$Test$World$

这样就可以了

$Hello$World$

应该不行

我尝试了以下方法:

^[$][\w:($)\2]+[$]$
但不幸的是,这并不像预期的那样有效


有什么想法吗?

< P>你可以考虑一个类似于< /P>的正则表达式。
^[$][\w:]+(?:[$][\w:]+[$][\w:]+)*[$]$

如果
$
之间的部分可以为空,并且
$$
也有效,请将
[\w:][/code>之后的
+
替换为
*
,以允许0次或更多次重复

详细信息

  • ^
    -字符串的开头
  • [$]
    -一个
    $
    符号(在许多情况下,写
    \$
    \\$
    就足够了)
  • [\w:::+
    -1个或多个单词字符或/和冒号
  • (?:[$][\w:][$][\w:][+])*
    -(或
    (?:(?:[$][\w:][+]){2})*
    )0+重复两次:
    • [$]
      -
      $
      char
    • [\w:::+
      -1个或多个单词字符或/和冒号
  • [$]
    -a
    $
    字符
  • $
    -字符串结束

也许吧?
$
之间的部分是否可以为空?另外,请参见为您执行上述任一工作?
\$
而不是
[$]
,以获得更好的可读性,否则将非常完美;-)