我對用於JavaScript的正則表達式的一部分有點麻煩。我需要一種方法來匹配除+
字符以外的任何字符,空字符串也應該匹配。正則表達式 - 匹配除+之外的任何字符,空字符串也應該匹配
[^+]
幾乎是我想要的,但它不匹配空字符串。我試過[^+]*
想:「除+
以外的任何字符,零次或多次」,但是這匹配包括+
在內的所有內容。
我對用於JavaScript的正則表達式的一部分有點麻煩。我需要一種方法來匹配除+
字符以外的任何字符,空字符串也應該匹配。正則表達式 - 匹配除+之外的任何字符,空字符串也應該匹配
[^+]
幾乎是我想要的,但它不匹配空字符串。我試過[^+]*
想:「除+
以外的任何字符,零次或多次」,但是這匹配包括+
在內的所有內容。
添加{0,1}它,因此它只會匹配0或者1次,不多不少:
[^+]{0,1}
或者,如FailedDev指出,?
工程太:
[^+]?
正如預期的那樣,隨着Chrome的JavaScript控制檯測試表明敵不過"+"
但並匹配其它字符:
x = "+"
y = "A"
x.match(/[^+]{0,1}/)
[""]
y.match(/[^+]{0,1}/)
["A"]
x.match(/[^+]?/)
[""]
y.match(/[^+]?/)
["A"]
[^+]
意味着「匹配任何單個字符不是+
」[^+]*
的意思是「匹配不是+
任何數目的字符」 - 這似乎像什麼,我想你想,只是它將匹配如果第一個字符(或者甚至是所有字符)都是+
,則爲零字符。使用錨,以確保表達式驗證整個字符串:
^[^+]*$
表示:
^ # assert at the beginning of the string
[^+]* # any character that is not '+', zero or more times
$ # assert at the end of the string
怎麼可能是'[^ +] *'匹配'+ '?這沒有意義。你的表情一定有其他錯誤。 –
@ScottRippey:我猜測(在我的回答中)'*'量詞允許匹配成功通過匹配任何東西(零個字符不是'+')成功。在沒有錨或其他斷言的情況下,理論上它可以在'+'之前或之後匹配,從而允許整個字符串匹配。 (當然這會匹配之前的,因爲這是第一個,它會在那裏停止)這個評估對你沒有意義嗎? –