Включение дефиса в скобку символа регулярного выражения? - PullRequest
50 голосов
/ 13 сентября 2010
$.validator.addMethod('AZ09_', function (value) { 
    return /^[a-zA-Z0-9.-_]+$/.test(value); 
}, 'Only letters, numbers, and _-. are allowed');

Когда я использую что-то вроде test-123, оно все равно срабатывает, как будто дефис недействителен.Я пробовал \- и --

Ответы [ 5 ]

82 голосов
/ 13 сентября 2010

Экранирование с использованием \- должно быть в порядке, но вы также можете попробовать поместить его в начало или конец класса персонажа. Это должно работать для вас:

/^[a-zA-Z0-9._-]+$/
25 голосов
/ 13 сентября 2010

Избегать дефиса с помощью \- - правильный путь.

Я проверил, что выражение /^[a-zA-Z0-9.\-_]+$/ допускает дефисы. Вы также можете использовать класс \w, чтобы сократить его до /^[\w.\-]+$/.

(Помещение дефиса последним в выражении фактически приводит к тому, что он не требует экранирования, поскольку тогда он не может быть частью диапазона, однако вы все равно можете захотеть всегда избегать его.)

2 голосов
/ 13 сентября 2010

\- должно работать, чтобы избежать - в диапазоне символов.Можете ли вы процитировать то, что вы тестировали, когда это не показалось?Потому что, кажется, работает: http://jsbin.com/odita3

0 голосов
/ 13 октября 2015

Более общий способ сопоставления дефисов - использование класса символов для дефисов и тире ("\ p {Pd}" без кавычек). Если вы имеете дело с текстом из разных культур и источников, вы можете обнаружить, что существует больше типов дефисов, а не только один символ. Вы можете добавить это внутри выражения []

0 голосов
/ 13 сентября 2010

\ - возможно, не работал, потому что вы передали весь материал с сервера со строкой.Если это так, вы должны сначала избежать \, чтобы программа на стороне сервера тоже могла его обработать.

  • В строке на стороне сервера: \\ -
  • На стороне клиента: \ -
  • В регулярном выражении (обложки): -

Или вы можете просто заключить в скобки и [].

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