我在JavaScript中使用的正则表达式的一部分遇到了一些麻烦.我需要一种方法匹配字符以外的任何+字符,空字符串也应该匹配.
[^+]几乎是我想要的,除了它与空字符串不匹配.我曾经尝试过[^+]*思考:"除了+零次或多次之外的任何角色",但这符合一切,包括+.
Cod*_*key 29
[^+]意思是"匹配任何不是+"的单个字符[^+]*意味着"匹配任何数量的不是+" 的字符- 这几乎看起来像我想要的那样,除非它匹配零字符,如果第一个字符(甚至所有字符)都是+.使用锚点来确保表达式验证整个字符串:
^[^+]*$
Run Code Online (Sandbox Code Playgroud)
手段:
^ # assert at the beginning of the string
[^+]* # any character that is not '+', zero or more times
$ # assert at the end of the string
Run Code Online (Sandbox Code Playgroud)
cho*_*own 26
添加一个{0,1},使它只匹配零次或一次,不多也不少:
[^+]{0,1}
Run Code Online (Sandbox Code Playgroud)
或者,正如FailedDev指出的那样,?也有效:
[^+]?
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,使用Chrome的JavaScript控制台进行测试显示不匹配"+"但与其他字符匹配:
x = "+"
y = "A"
x.match(/[^+]{0,1}/)
[""]
y.match(/[^+]{0,1}/)
["A"]
x.match(/[^+]?/)
[""]
y.match(/[^+]?/)
["A"]
Run Code Online (Sandbox Code Playgroud)