Попытка написать регулярное выражение, которое соответствует только числам, пробелам, скобкам, + и - - PullRequest
1 голос
/ 13 июля 2010

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

/\d|\s|\-|\)|\(|\+/g

, но я получаю эту ошибку: не найдено)регулярное выражение любые предложения помогут.Спасибо

Ответы [ 5 ]

8 голосов
/ 13 июля 2010

Используйте класс символов:

/[\d\s()+-]/g

Соответствует одному символу, если это цифра \d, пробел \s, литерал (, литерал ), литерал + или литерал -. Поместить - last в символьный класс - это простой способ сделать его буквальным -; в противном случае он может стать метасимволом определения диапазона (например, [A-Z]).

Вообще говоря, вместо сопоставления одного символа за раз в качестве альтернатив (например, a|e|i|o|u), гораздо удобнее читать вместо него класс символов (например, [aeiou]). Это более кратко, более читабельно и естественно группирует символы вместе, так что вы можете сделать, например, [aeiou]+ для соответствия последовательности гласных.

Ссылки


Протест

Начинающие иногда ошибочно принимают класс персонажа за совпадение [a|e|i|o|u] или хуже [this|that]. Это не верно. Класс символов сам по себе соответствует одному и ровно одному символу из входных данных.

Похожие вопросы

1 голос
/ 23 апреля 2015
/^[\d\s\(\)\-]+$/

Это выражение соответствует только цифрам, скобкам, пробелам и знакам минус.Например:

  • 888-111-2222
  • 888 111 2222
  • 8881112222
  • (888) 111-2222
  • ...
1 голос
/ 13 июля 2010
0 голосов
/ 13 июля 2010

Попробуйте это:

[\d\s-+()]
0 голосов
/ 13 июля 2010

Вам необходимо избежать скобок, поскольку скобки используются в качестве специального синтаксиса в регулярных выражениях:

вместо '(': \(

вместо ')': \)

Кроме того, это не будет работать с '+' по той же причине: \+

Редактировать: вы можете захотеть использовать класс символов вместо 'или' нотации с '|' потому что это более читабельно: [\s\d()+-]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...