[英]Regular Expression - Match any string not starting with + but allow +1
我需要一個JavaScript的正則表達式,它將匹配任何不以+
字符開頭的字符串。 除了一個例外,以+1
開頭的字符串是可以的。 空字符串也應該匹配。
例如:
"" = true
"abc" = true
"+1" = true
"+1abc" = true
"+2" = false
"+abc" = false
到目前為止,我發現^(\\+1|[^+]?)$
負責+1
部分,但我似乎無法在不使第一部分無效的情況下允許更多字符。 我以為^(\\+1|[^+]?).*?$
會起作用,但它似乎匹配所有東西。
首先,匹配組的第二部分不是可選的,因此您應該刪除?。
其次,因為你只關心開頭出現的內容,所以在$之前不需要測試整個字符串。
最后,要使空字符串返回true,您還需要測試/ ^ $ /。
結果是:
/^(\+1|[^+]|$)/
例如:
/^(\+1|[^+]|$)/.test(""); // true
/^(\+1|[^+]|$)/.test("abc"); // true
/^(\+1|[^+]|$)/.test("+1"); // true
/^(\+1|[^+]|$)/.test("+1abc"); // true
/^(\+1|[^+]|$)/.test("+2"); // false
/^(\+1|[^+]|$)/.test("+abc"); // false
(控制台應該打開)
一些選擇:
^($|\+1|[^+]) <-- cleanest
^(\+1.*|[^+].*)?$ <-- clearest
^(?!\+(?!1)) <-- coolest :-)
這應該工作: ^(\\+1.*|[^+].*)?$
它也很簡單。
\\+1.*
- 匹配+1(以及可選的其他一些東西)
[^+].*
- 或者一個不是加號的字符(以及可選的其他一些東西)
^()?$
- 或者如果這兩者都不匹配,那么它應該是一個空字符串。
試試這個正則表達式:
regex = /^([^+]|\+1|$)/
如果您只關心字符串的開頭,請不要打擾搜索結尾的正則表達式:
/^($|\+1|[^+])/
或者你可以不使用正則表達式來做到這一點:
myString.substr(0,1) != "+" || myString.substr(0,2) == "+1";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.