2017-02-16 2 views
-2

Пытается сделать регулярное выражение в js на поле электронной почты. это то, что я до сих пор:New Regex() добавляет трейлинг-косую черту

var regex  = '[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\\.[a-zA-Z]{2,16}?$/g', 
emailRegex  = new RegExp(regex); 

если я console.log(), то она возвращает emailRegex:

/[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$\/g/ 

Что я хочу:

/[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$/g 

Как это теперь он возвращает сообщение об ошибке. Использование https://regex101.com/ с регулярным выражением, которое я хочу (без конечной косой черты), работает, используя регулярное выражение, которое возвращается в console.log(), не соответствует совпадению.

Как удалить конечную косую черту из RegExp?

+0

'вар регулярное выражение =«^ [A-Za-z0-9 ._% + -] + @ [ a-zA-Z0-9 .-] + \\. [a-zA-Z] {2,16}? $ ', emailRegex = новый RegExp (regex,' g '); ' –

+0

@ WiktorStribiżew спасибо, что сделал он - новый для регулярного выражения, не знал, что вы можете передать глобальный класс RegExp haha ​​#scrub :) – HugoNumber1

ответ

4

Формат /regularexpression/flags - это литерал формат для регулярного выражения; вы не используете его, если используете конструктор RegExp; вместо этого, вы используете два дискретных строки: new RegExp("regularexpression", "flags")

Итак:

var regex  = '[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\\.[a-zA-Z]{2,16}?$', 
emailRegex  = new RegExp(regex, "g"); 

Конечно, в этом случае нет необходимости в new RegExp:

var emailRegex = /[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,16}?$/g; 
+0

Спасибо, не знал, что вы можете передать материал флага классу - новый для regexp haha ​​примет в 8mins – HugoNumber1

1

Чтобы добавить флаги в буквальном выражение вы необходимо использовать формулу /:

var r = /matching/g; 

вы не можете предоставить флаги при создании с помощью строки за исключением явного использования RegExp конструктора:

var r = new RegExp('matching', 'g'); 
Смежные вопросы