Регулярные выражения для разбора "настоящих" слов в JavaScript - PullRequest
2 голосов
/ 15 февраля 2010

У меня есть какой-то текст, где некоторые слова являются «настоящими» словами, а другие - масками, которые будут заменены каким-то текстом и которые будут окружены, скажем,%. Вот пример:

Привет, дорогой% Name%! Ты% Возраст% лет

Какое регулярное выражение я должен использовать, чтобы получить "настоящие" слова без использования lookbehind, потому что они не существуют в JavaScript?

UPD: я хочу получить слова "привет", "дорогой", "ты", "ты.о.".

Ответы [ 5 ]

1 голос
/ 15 февраля 2010

Вы можете использовать split, чтобы получить слова и затем отфильтровать слова:

var str = "Hello dear %Name%! You're %Age% y.o.", words;
words = str.split(/\s+/).filter(function(val) {
    return !/%[^%]*%/.test(val);
});
1 голос
/ 15 февраля 2010

Если я правильно понял ваш вопрос, это может сработать.

Я бы пошел по другому пути, вместо того, чтобы находить настоящие слова, я бы удалил "фальшивые слова".

s = "Hello dear %Name%! You're %Age% y.o."
realWords = s.replace(/%.*?%/g, "").split(/ +/)
0 голосов
/ 15 февраля 2010

Используйте регулярное выражение в Javascript и разбейте строку на основе соответствующего регулярного выражения.

//javascript
var s = "Hello dear %Name%! You're %Age% y.o.";
words = s.split(/%[^%]*?%/i);

//To get all the words
for (var i = 0; i < words.length; i++) {

}
0 голосов
/ 15 февраля 2010

Вы можете сопоставить% Something% с помощью% [^%] *?%, Но как вы храните все отдельные значения маски, такие как Имя и Возраст?

0 голосов
/ 15 февраля 2010

Чтобы выполнить поиск и заменить на регулярные выражения, используйте метод replace () строки:

myString.replace(/replaceme/g, "replacement")

Использование модификатора / g гарантирует, что все вхождения "replaceme" будут заменены. Второй параметр - это обычная строка с текстом замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...