我需要一个JavaScript的正则表达式,它将匹配任何不以+字符开头的字符串.除了一个例外,字符串开头+1是可以的.空字符串也应该匹配.
例如:
"" = true
"abc" = true
"+1" = true
"+1abc" = true
"+2" = false
"+abc" = false
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现^(\+1|[^+]?)$照顾+1部分,但我似乎无法让它在没有使第一部分无效的情况下允许更多的字符.我认为这^(\+1|[^+]?).*?$会起作用,但似乎与一切相符.
首先,匹配组的第二部分不是可选的,因此您应该删除?.
其次,因为你只关心开头出现的内容,所以在$之前不需要测试整个字符串.
最后,要使空字符串返回true,您还需要测试/ ^ $ /.
结果是:
/^(\+1|[^+]|$)/
Run Code Online (Sandbox Code Playgroud)
例如:
/^(\+1|[^+]|$)/.test(""); // true
/^(\+1|[^+]|$)/.test("abc"); // true
/^(\+1|[^+]|$)/.test("+1"); // true
/^(\+1|[^+]|$)/.test("+1abc"); // true
/^(\+1|[^+]|$)/.test("+2"); // false
/^(\+1|[^+]|$)/.test("+abc"); // false
Run Code Online (Sandbox Code Playgroud)
(控制台应该打开)
一些选择:
^($|\+1|[^+]) <-- cleanest
^(\+1.*|[^+].*)?$ <-- clearest
^(?!\+(?!1)) <-- coolest :-)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4265 次 |
| 最近记录: |