Разница между литеральной формой и объектом RegExp
Код:
var $eMail = 'blah-blah9@blah-blah-blah9.blahblahblah'; Почему так? Может кто подскажет? Ушатал из-за этой непонятной разницы целые сутки. Переписывал регулярку по разному (думал, что неправильно пишу регулярку), экспериментировал (с объектом RegExp) и никак не мог понять почему не работает, пока не переписал в виде литерала и все заработало. |
new RegExp('^[-_a-z0-9\\.]+@(?:[-_a-z0-9]+(?=\\.)\\.)+[a-z]{2,6}$', 'i')
В конструкторе new RegExp обратные слеши надо экранировать. |
Цитата:
Чтобы сформировать в памяти строку abc\cde в исходном коде js нужно записать ее как 'abc\\cde' <input onchange="alert(new RegExp(dataset.pattern, 'i').test(value))" data-pattern="^[-_a-z0-9\.]+@(?:[-_a-z0-9]+(?=\.)\.)+[a-z]{2,6}$" value="blah-blah9@blah-blah-blah9." /> <form action="javascript:'ok'"> <input type="email" required /> <button type="submit">Попытаться отправить</button> </form> |
Получается, что нужно проверять входное значение и при необходимости экранировать?
|
laimas, в примере у меня email не дописан, поэтому выдает false.
Я просто показал, что строка может быть записана не в js-коде, а в html-коде, а по правилам html слэш не является спецсимволом. То есть дело не в конструкторе RegExp, а в правилах синтаксиса языка, на котором записывается строка. |
Ну тогда понятно.
PS. danik.js ты же здесь дано обитаешь, должен быть в курсе. В общем попал я здесь на страницу, на которой описано форматирование сообщения - добавление [JS run], еще чего-то там... Была открыта эта страница, но Лиса подвисла и пришлось ее насильно отключить, последнее открытое не сохранилось. Все пытаюсь найти опять эту страницу форума и безуспешно, даже не представляю как на нее попал раньше. ) Дай ссылку на нее, пожалуйста. |
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Благодарю, оно самое.
|
ОК, спасибо. Дело в том, что в статье о регулярках не встречал этой тонкости.
|
Часовой пояс GMT +3, время: 00:14. |