2017-02-15 5 views
1

это моя проблема:Javascript Regexp нечувствительны

Я пытаюсь сделать конкретные регулярные выражения для Validation поле Шаблон в Salesforce. Идея состоит в том, чтобы создать что-то, чтобы помочь людям заполнять текстовое поле в обычной форме.

Вот характеристики:

  1. Разрешенные символы: [a-z0-9/?:(),'.+ -]
  2. Слова, которые не принимаются: discount и www также, если другой содержит discount или www, которые не должны быть приняты как: helldiscount => не принимается
  3. Полное regexp должно быть нечувствительным
  4. Несанкционированное характеристики: .xxx (точка с 3-х букв следующих) и .xx (точка с 2-мя буквами следующих)

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

^(?!discount|www)([a-zA-Z0-9/?:(),.'+ -]+)$ 

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

(?i)^(?!(?:discount|www)$)([a-z0-9/?:(),'.+ -]+)$ 

Я пропустил Кое-что, и я не могу понять, что это.

Справка будет оценена, спасибо!

+0

вы забыли бежать/ – Rikin

+0

@Rikin Это не обязательно! Он внутри набора! –

+0

regex101 дал мне ошибку, несмотря на то, что он внутри набора. Я думаю, все зависит от библиотеки, которую вы пытаетесь использовать, которая может иметь инклюзивное экранирование или нет. – Rikin

ответ

0

Вы проверяете, если discount или www не в начале строки, вы должны проверить везде в строке:

^(?i)(?!.*discount|.*www)([a-zA-Z0-9/?:(),.'+ -]+)$ 
//  ^^   ^^ 
+0

Это работает для PHP, но не для Javascript. –

0

Я не знаю, Salesforce, но в JavaScript, проще всего было бы если вы проверить, если следующее регулярное выражение делает не матч:

(discount|www|[^a-z0-9/?:(),.'+ -]) 
+0

Прямо здесь вы соответствуете 'discount' и' www', цель состоит в том, чтобы сопоставлять любые другие слова или символы, кроме –

+0

, да, и я отрицал группу символов. Поэтому вам нужно только посмотреть, не работает ли регулярное выражение **, а не **. В простом Javascript, например, '' if (! Texttovalidate.match (/(discount|www|[^a-z0-9/?:(),.++])/i)) alert ('Validation failed!'); '' – ohteam