2012-05-22 2 views
0

Я хотел бы подобрать следующий термин в JavaScript с помощью regex.Соответствие регулярных выражений в javascript

String = 'abc AND def AND igk AND lmn' 

Условия соответствовать: слово до и после первого AND.

Например, в приведенной выше строке будет соответствовать: abc AND def.

Я хочу сделать это в JavaScript. Поэтому я позвоню

string.match(/regex to use/) 

и присвоить его var.

Любые предложения, пожалуйста.

EDIT:

строка может быть формы, как:

string = 'AND abc'; 
    string = 'abc AND'; 
    string = 'abc def AND igk lmn'; 
    string = 'abc def AND'; 
    string = 'AND igk lmn'; 

Цените вашу помощь в этом отношении.

+0

Таким образом, слова до/после являются необязательными? Или должно быть только совпадение, если оба слова действительно присутствуют? Может ли быть строка '' AND'' (и если да, то что должно произойти)? –

+0

Вы заинтересованы в совпадении 'abc', если ваша строка' 'abc'' (нет И вообще)? –

+0

если у меня нет слова до или после И, никаких проблем, я буду пустым. Если только И присутствуют, мои оба слова будут пустыми. Таким образом, слова являются необязательными, могут присутствовать или отсутствовать. Я проверю их после и пропустил null. – kailash19

ответ

1

Небольшое улучшение по версии Игоря:

var m = str.match (/(\w+)\s+AND\s+(\w+)/); 
    // word before AND in m[1], word after AND in m[2] 

Автоматически извлекает два слова.

+0

Я использую его как:/(\ w *) \ s * AND \ s * (\ ш *) /. спасибо – kailash19

3

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

/(\w+\s+AND\s+\w+)/ 

EDIT (после прочтения последнего обновления): если левый и правый являются необязательными, используйте следующее регулярное выражение вместо:

/(?: (\w+) \s+)? AND (?: \s+ (\w+))?/x 
+0

Вам нужно удалить '^', иначе это произойдет, если перед первым 'AND' будет более одного слова. –

+0

Я сделал редактирование; если вы не используете модификатор '/ g', это регулярное выражение найдет первое вхождение' AND' плюс два слова вокруг него (если «слово» определено как «как серия буквенно-цифровых символов ASCII») , –

+0

Спасибо, Том. Я положил '^', потому что до последнего редактирования OP неясно, что именно нужно было сопоставить. –

Смежные вопросы