2015-03-10 3 views
0

У меня есть такой объект в JavaScript:Регулярного выражения для сопоставления несколько слов с и без пробелов

['abc def ghi', 'abcdef ghi', 'abc DEFghi'] 

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

/(abc def ghi)/ig 

Я знаю о белом пространстве выражения, как \s*, но есть способ, чтобы использовать его без необходимости вводить его каждый пробельный каждый элемент моего объекта?

+0

Вы можете сначала удалить все пробелы из строки (заменить пробел пустой строкой), а затем совместить с символом '(abcdefghi) \ ig' –

+0

Является ли порядок букв и их число в строке важными? Или это может быть что-то вроде 'dbi aec hfg' или' aaabbb ccc'? –

+0

В моем практическом сценарии это выглядит следующим образом: мне нужно сравнить строку имен компаний против одного названия компании, например: 'if 'Super Secret Spying CorpInc' в ['Super Secret Spying Corp Inc', 'Another One Inc'] 'Обратите внимание на опечатку" CorpInc " – nottinhill

ответ

1

Вы можете использовать это регулярное выражение с опциональным пространством соответствия:

var reg = /\babc ?def ?ghi\b/i; 

\b используются для границы слова.

Или вы можете обрезать все пробельные заранее от входа и соответствовать строке как:

var m = input.replace(/\s+/g, "").match(/\babcdefghi\b/i); 
1

Вы можете использовать .replace(/\s/g, '').match(/abcdefghi/) Если пространство разрешено быть где угодно.

Если вы просто хотите игнорировать пространство в определенном месте, abc *def *ghi достаточно короткий.

1

Вы можете использовать /([a-iA-I\s]+)/ig

должен соответствовать все в вашем объекте.