Я хочу реализовать функцию соответствия регулярных выражений в javascript, которая соответствует одному или нескольким ключевым словам в тексте. Каждое ключевое слово должно быть найдено в любом порядке. Ключевые слова вводятся пользователем.Соответствие ключевого слова Regex
Вот где я нахожусь:
\b(smart.*\bwork.*|work.*\bsmart.*)
- спички
"trying to work smarter"
- но не
"trying to work" or "trying to be smart"
Проблема с этим подходом, я должен создавать различные упорядоченные перестановки (что-то подобное в любом случае) из набора ключевых слов.
Так вопросы:
- Если простой RegEx-единственный способ? (Т.е.
"\b(smart.*|work.*)<magic:all,anyorder>"
, что будет убедиться, что все ключевые слова будут найдены, и в любом порядке) - Если нет - вы можете предложить яваскрипта реализацию перестановок массива (так что с
[1,2,3]
он генерирует[[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
)
UPDATE
Предназначен для поиска набора строк (10-50 строк) на стороне клиента (в браузере).
Я бы не рекомендовал регулярное выражение, когда дело доходит до «этих ключевых слов в любом порядке с чересстрочной приемлемой». Я бы рекомендовал `indexOf()` для каждого ключевого слова; это будет стоить намного меньше, чем потенциально сложное регулярное выражение. – BeemerGuy 2010-12-17 00:32:36
Трудно понять, что вы пытаетесь сделать. Это не какой-то рандомизатор спама? – 2010-12-17 00:38:46
Ваш второй вариант звучит как кошмар производительности, если вы собираетесь использовать его для создания группы RegEx и протестировать их все. – 2010-12-17 00:48:19