我真的没有把它放在一个问题的形式,但我必须编写一个匹配模式+a+
的字符串的函数。
字符串应该是格式,其中每个字母都被" +"包围。登录。
我想出了这个表达式var letter = /\+\w\+/;
。这样做的问题是,即使模式在整个字符串中只匹配一次,它也会返回true。
对"+f+++a+b+c++"
返回true,但对"+f=++a+b+c++"
也返回true。
谢谢
答案 0 :(得分:0)
您可以匹配反向并抛出错误
像
这样的东西"+f+++a=+b+=c++".match(/(\w=|=\w)/g) == null ; //false
和
"+f+++a+b+c++".match(/(\w=|=\w)/g) == null ; //true
以上回答仅检查=
作为可以分隔角色的角色,其余为
"f+++a+b+c++".match(/(\w[^+]|[^+]\w)/g) == null ; //true
和
"+f+++.a+b+c++".match(/(\w[^+]|[^+]\w)/g) == null ; //false
对于第一个字符不是+
的边界情况,请尝试
var word = "+f+++a+b+c++";
!word[0].match(/\w/) && word.match(/(\w[^+]|[^+]\w)/g) == null ; //true
和
var word = "+f+++.a+b+c++";
!word[0].match(/\w/) && word.match(/(\w[^+]|[^+]\w)/g) == null ; //false