Javascript 字符串必须包含一个特定字符一次

Javascript 字符串必须包含一个特定字符一次,javascript,regex,Javascript,Regex,在编写正则表达式时,我只知道如何指定字符串中允许的内容,但不知道如何指定其中必须包含的内容 比如说,我需要一个正则表达式来验证一个句子,该句子在任何地方都只包含一个$字符 "This $ should validate." "This shouldn't validate." "This $ should not $ validate either." 如何做到这一点?允许任意数量的字符,但允许的字符的任一侧除外$: isValid = /^[^$]*\$[^$]*$/.test(theStr

在编写正则表达式时,我只知道如何指定字符串中允许的内容,但不知道如何指定其中必须包含的内容

比如说,我需要一个正则表达式来验证一个句子,该句子在任何地方都只包含一个
$
字符

"This $ should validate."
"This shouldn't validate."
"This $ should not $ validate either."

如何做到这一点?

允许任意数量的字符,但允许的字符的任一侧除外
$

isValid = /^[^$]*\$[^$]*$/.test(theString);
^
$
分别断言开始和结束<代码>[^$]匹配除
$
以外的任何内容<代码>*表示“零次或多次”。中间的<代码> \ $ <代码>是一个文字允许的<代码> $

测试字符串的实时示例:

功能测试(字符串){
var isValid=/^[^$]*\$[^$]*$/.test(字符串);
log(字符串“=>”,是否有效?“有效”:“无效”);
}
测试(“此$should validate.”);
测试(“这不应该验证”);

测试(“此$也不应验证$”)您可以使用以下正则表达式:

^[^$\n]*\$[^$\n]*$

演示:

首先,请记住,
$
在正则表达式中有特殊含义,因此需要使用
\$
引用它(用反斜杠转义)。有一个例外:在字符类中,您不需要转义它

它通常具有的特殊含义是“字符串的末尾”

您真正需要的是一个匹配

  • 绳子的乞讨
  • 零个或多个非美元字符
  • 一美元
  • 零个或多个非美元字符
  • 弦外之音
你这样做的方式是

  • ^
  • [^$]*
  • \$
  • [^$]*
  • $
解释
[^$]
符号:
^
表示“不”

您需要的最后一个正则表达式是
^[^$]*\$[^$]*$
。您可以使用
str.test()
确定字符串是否通过此条件