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()
确定字符串是否通过此条件