Регулярное выражение - сопоставление любого символа, кроме +, пустая строка также должна быть сопоставлена
У меня возникают проблемы с одной частью регулярного выражения, которое будет использоваться в JavaScript. Мне нужен способ сопоставить любой символ, отличный от символа +
, также должна совпадать пустая строка.
[^+]
- это почти то, что я хочу, за исключением того, что он не соответствует пустой строке. Я пробовал думать [^+]*
: "любой символ, отличный от +
, ноль или более раз", но это соответствует всем, включая +
.
Ответы
Ответ 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"]
Ответ 2
-
[^+]
означает "соответствовать любому одиночному символу, который не является +
"
-
[^+]*
означает "соответствовать любому количеству символов, которые не являются +
", что почти похоже на то, что я думаю, что вы хотите, за исключением того, что оно будет соответствовать нулевым символам, если первый символ (или даже все символы ) +
.
используйте привязки, чтобы убедиться, что выражение проверяет значение ENTIRE STRING:
^[^+]*$
означает:
^ # assert at the beginning of the string
[^+]* # any character that is not '+', zero or more times
$ # assert at the end of the string
Ответ 3
Если вы просто проверяете строку, чтобы увидеть, не содержит ли она +
, вы должны использовать:
^[^+]*$
Это будет соответствовать только если строка ENTIRE не имеет +
.