Подтвердить что ты не робот

Регулярное выражение - сопоставление любого символа, кроме +, пустая строка также должна быть сопоставлена

У меня возникают проблемы с одной частью регулярного выражения, которое будет использоваться в JavaScript. Мне нужен способ сопоставить любой символ, отличный от символа +, также должна совпадать пустая строка.

[^+] - это почти то, что я хочу, за исключением того, что он не соответствует пустой строке. Я пробовал думать [^+]*: "любой символ, отличный от +, ноль или более раз", но это соответствует всем, включая +.

4b9b3361

Ответ 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 не имеет +.