Регулярные выражения
Форум |
Учебник | Node.JS скринкаст | Стандарт языка | Справочник |
Discord чат |
| Статьи | Тест знаний | Аналоги функций PHP | Курсы javascript |
Проверка результатов: метод
|
| Объект | Свойство/Индекс | Описания | Пример |
myArray |
|
Содержимое myArray. |
["dbBd", "bB", "d"] |
index |
Индекс совпадения (от 0) | 1 |
|
input |
Исходная строка. | cdbBdbsbz |
|
[0] |
Последние совпавшие символы | dbBd |
|
[1], ...[ |
Совпадения во вложенных скобках, если есть. Число вложенных скобок не ограничено. | [1] = bB |
|
myRe |
lastIndex |
Индекс, с которого начинать следующий поиск. | 5 |
ignoreCase |
Показывает, что был включен регистронезависимый поиск, флаг "i". |
true |
|
global |
Показывает, что был включен флаг "g" поиска всех совпадений. |
true |
|
multiline |
Показывает, был ли включен флаг многострочного поиска "m". |
false |
|
source |
Текст паттерна. | d(b+)(d) |
Если в регулярном выражении включен флаг "g", Вы можете вызывать метод exec много раз для поиска последовательных совпадений в той же строке. Когда Вы это делаете, поиск начинается на подстроке str, с индекса lastIndex. Например, вот такой скрипт:
var myRe = /ab*/g;
var str = "abbcdefabh";
while ((myArray = myRe.exec(str)) != null) {
var msg = "Found " + myArray[0] + ". ";
msg += "Next match starts at " + myRe.lastIndex;
print(msg);
}
Этот скрипт выведет следующий текст:
Found abb. Next match starts at 3 Found ab. Next match starts at 9
В следующем примере функция выполняет поиск по input. Затем делается цикл по массиву, чтобы посмотреть, есть ли другие имена.
Предполагается, что все зарегистрированные имена находятся в массиве А:
var A = ["Frank", "Emily", "Jane", "Harry", "Nick", "Beth", "Rick",
"Terrence", "Carol", "Ann", "Terry", "Frank", "Alice", "Rick",
"Bill", "Tom", "Fiona", "Jane", "William", "Joan", "Beth"];
function lookup(input)
{
var firstName = /\w+/i.exec(input);
if (!firstName)
{
print(input + " isn't a name!");
return;
}
var count = 0;
for (var i = 0; i < A.length; i++)
{
if (firstName[0].toLowerCase() == A[i].toLowerCase())
count++;
}
var midstring = (count == 1) ? " other has " : " others have ";
print("Thanks, " + count + midstring + "the same name!")
}
Строковые методы, поиск и замена
Следующие методы работают с регулярными выражениями из строк.
Все методы, кроме replace, можно вызывать как с объектами типа regexp в аргументах, так и со строками, которые автоматом преобразуются в объекты RegExp.
Так что вызовы эквивалентны:
var i = str.search(/\s/)
var i = str.search("\\s")
При использовании кавычек нужно дублировать \ и нет возможности указать флаги. Если регулярное выражение уже задано строкой, то бывает удобна и полная форма
var regText = "\\s" var i = str.search(new RegExp(regText, "g"))
Метод search(regexp)
Возвращает индекс регулярного выражения в строке, или -1.
Если Вы хотите знать, подходит ли строка под регулярное выражение, используйте метод search(аналогично RegExp-методы test). Чтобы получить больше информации, используйте более медленный метод match(аналогичный методу RegExp exec).
Этот пример выводит сообщение, в зависимости от того, подходит ли строка под регулярное выражение.
function testinput(re, str){
if (str.search(re) != -1)
midstring = " contains ";
else
midstring = " does not contain ";
document.write (str + midstring + re.source);
}
Метод match(regexp)
Если в regexp нет флага g, то возвращает тот же результат, что regexp.exec(string).
Если в regexp есть флаг g, то возвращает массив со всеми совпадениями.
Чтобы просто узнать, подходит ли строка под регулярное выражение regexp, используйте regexp.test(string).
Если Вы хотите получить первый результат - попробуйте regexp.exec(string).
В следующем примере match используется, чтобы найти "Chapter", за которой следует 1 или более цифр, а затем цифры, разделенные точкой. В регулярном выражении есть флаг i, так что регистр будет игнорироваться.
str = "For more information, see Chapter 3.4.5.1"; re = /chapter (\d+(\.\d)*)/i; found = str.match(re); alert(found);
Скрипт выдаст массив из совпадений:
- Chapter 3.4.5.1 - полностью совпавшая строка
- 3.4.5.1 - первая скобка
- .1 - внутренняя скобка
Следующий пример демонстрирует использование флагов глобального и регистронезависимого поиска с match. Будут найдены все буквы от А до Е и от а до е, каждая - в отдельном элементе массива.
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var regexp = /[A-E]/gi; var matches = str.match(regexp); document.write(matches); // matches = ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
Замена, replace
Метод replace может заменять вхождения регулярного выражения не только на строку, но и на результат выполнения функции. Его полный синтаксис - такой:
var newString = str.replace(regexp/substr, newSubStr/function)
-
regexp - Объект RegExp. Его вхождения будут заменены на значение, которое вернет параметр номер 2
-
substr - Строка, которая будет заменена на
newSubStr.
-
newSubStr - Строка, которая заменяет подстроку из аргумента номер 1.
-
function - Функция, которая может быть вызвана для генерации новой подстроки (чтобы подставить ее вместо подстроки, полученной из аргумента 1).
Метод replace не меняет строку, на которой вызван, а просто возвращает новую, измененную строку.
Чтобы осуществить глобальную замену, включите в регулярное выражение флаг "g".
Если первый аргумент - строка, то она не преобразуется в регулярное выражение, так что, например,
var ab = "a b".replace("\\s","..") // = "a b"
Вызов replace оставил строку без изменения, т.к искал не регулярное выражение \s, а строку "\s".
Спецсимволы в строке замены
В строке замены могут быть такие спецсимволы:
| Pattern | Inserts |
$$ |
Вставляет "$". |
$& |
Вставляет найденную подстроку. |
$` |
Вставляет часть строки, которая предшествует найденному вхождению. |
$' |
Вставляет часть строки, которая идет после найденного вхождения. |
$ or $ |
Где или - десятичные цифры, вставляет подстроку вхождения, запомненную n-й вложенной скобкой, если первый аргумент - объект RegExp. |
Замена через функцию
Если Вы указываете вторым параметром функцию, то она выполняется при каждом совпадении.
В функции можно динамически генерировать и возвращать строку подстановки.
Первый параметр функции - найденная подстрока. Если первым аргументом replace является объект RegExp, то следующие n параметров содержат совпадения из вложенных скобок. Последние два параметра - позиция в строке, на которой произошло совпадение и сама строка.
Например, следующий вызов replace возвратит XXzzzz - XX , zzzz.
function replacer(str, p1, p2, offset, s)
{
return str + " - " + p1 + " , " + p2;
}
var newString = "XXzzzz".replace(/(X*)(z*)/, replacer)
Как видите, тут две скобки в регулярном выражении, и потому в функции два параметра p1, p2.
Если бы были три скобки, то в функцию пришлось бы добавить параметр p3.
Следующая функция заменяет слова типа borderTop на border-top:
function styleHyphenFormat(propertyName)
{
function upperToHyphenLower(match)
{
return '-' + match.toLowerCase();
}
return propertyName.replace(/[A-Z]/, upperToHyphenLower);
}
Статичные регэкспы
В некоторых реализациях javascript регэкспы, заданные коротким синтаксисом /.../ - статичны. То есть, такой объект создается один раз в некоторых реализациях JS, например в Firefox. В Chrome все ок.
function f() {
// при многократных заходах в функцию объект один и тот же
var re = /lalala/
}
По стандарту эта возможность разрешена ES3, но запрещена ES5.
Из-за того, что lastIndex при глобальном поиске меняется, а сам объект регэкспа статичен, первый поиск увеличивает lastIndex, а последующие - продолжают искать со старого lastIndex, т.е. могут возвращать не все результаты.
При поиске всех совпадений в цикле проблем не возникает, т.к. последняя итерация (неудачная) обнуляет lastIndex.
Дополнительно
Для общего понимания регулярных выражений можно почитать Статью в wikipedia.
Более подробно они описаны в книге (англ.) Beginning Regular Expressions.
Текущий раздел
|
Поиск по сайту
|
Последние темы на форуме
|
Forum |


Автор: KOLANICH, дата: 22 ноября, 2008 - 23:52
#permalink\/-это косая черта?
Автор: Тёмик (не зарегистрирован), дата: 27 декабря, 2008 - 00:41
#permalinkПомогите пожалуйста!
В переменной str находятся несколько слов, разделённых между собой пробелом. Нужно записать в массив myArray только те из них, которые начинаются с a и заканчиваются на b. Т.е. что-то вроде:
В результате должно получиться:
Вопрос: что писать в тексте паттерна?
Автор: Гость (не зарегистрирован), дата: 27 декабря, 2008 - 21:00
#permalinkРазбей на массив эту строку, как explode в php, и потом ^a*b$
Автор: Тёмик (не зарегистрирован), дата: 27 декабря, 2008 - 23:10
#permalinkНе пойму зачем на массив разбивать? Смысл?
Ну. допустим. разбил - не фурычит! В качестве результата ничего не выдаёт.
Я с JS знаком всего-лишь немногим больше недели. Можно всё немного поподробней объяснить? Даже лучше исходник скрипта готовый выложи.
Автор: Гость (не зарегистрирован), дата: 29 декабря, 2008 - 18:33
#permalinkКак ты разбил? Что за вопросы насчёт "смысла" ? Тебе в итоге же массив и нужен, тогда какие оправдания чем этот способ не устаивает?
Надеюсь пробелы выкинул? Найди аналог phpшного explode, если не знаешь как правильно организовать. PHP JS тебе в лапы.
Потом в цикле for пробегаешься по массиву (не ищи в манах ссылок вида & и прочего php-дерьма, в JS массив СРАЗУ передаётся по жёсткой ссылке), если регексп не удовлетворяет - удаляешь его нахрен из массива. Вот и всё готово, в массиве останется только то что нужно. Исходник некогда ваять, время $$$.
Автор: latteo (не зарегистрирован), дата: 2 января, 2009 - 18:59
#permalinkПодскажите нубу через что можно поиск по всей странице сделать, пробовал через вариации win.document.getElementByTag('body').innerHTML не хочет
Автор: latteo (не зарегистрирован), дата: 3 января, 2009 - 00:08
#permalinkУра научился
document.body.innerHTML помог и статья http://javascript.ru/start/dom/intro
Автор: Se_Pe (не зарегистрирован), дата: 19 марта, 2009 - 14:12
#permalinkПодскажите, почему если в примере:
...
var newString = "XXzzzz".replace(/(X*)(z*)/, replacer)
заменить строку XXzzzz на например aaaXXzzzz, то того же результата не получиться. И что нужно написать в паттерне, чтоб получить тот же результат, что и в первом случае?
Автор: Гость (не зарегистрирован), дата: 22 марта, 2009 - 20:26
#permalinkа как быть если нужно заменить расширение допустим albom/123123.jpeg jpeg на html
Автор: Alekson, дата: 7 июля, 2009 - 14:43
#permalinkКак сделать просмотр назад?
?<= и ?#n не работают.
Автор: jed (не зарегистрирован), дата: 7 октября, 2009 - 00:13
#permalinkНачал эксперементировать с примером разбора "3.4.5.1"
text = "Chapter 3.4.5.1";
\d)(\.\d)?(\.\d)?(\.\d)?)/i;
regex = /chapter (?
result = text.match(regex);
result[0] = '';
Log("result = " + result);
Показывает: result = ,3,.4,.5,.1
Как раз то, что надо - каждая цифра отделено.
regex = /chapter (\d)((\.\d)+)/i;
Показывает: result = ,3,.4.5.1,.1
Это неудача - первая цифра отдельно, остальные вместе .4.5.1
Вопрос: как изменить второй regex, чтобы он выдавал как первый, но был без этих повторов (\.\d)?(\.\d)?(\.\d)?
Автор: subzey (не зарегистрирован), дата: 5 ноября, 2009 - 17:50
#permalink[xyz] Набор символов. Находит любой из перечисленных символов. Вы можете указать промежуток, используя тире
Ох, не тире, а дефис. Хотя и употребляется в смысле «тире».
Автор: Ыфьфдлщ (не зарегистрирован), дата: 20 ноября, 2009 - 00:52
#permalinkнарод помогите плиз составить регулярку а то немогу сделать как надо
вот приблизительно строка
Kuzyаааaj456 dfdf наградил федю
надо разделить строку на 2 части до наградил и после
при этом Kuzyаааaj456 dfdf может состоять из Nго количества слов, букв, и содержать любые символы (лат\нелат\цифры\спецсимволы)
Автор: Гость (не зарегистрирован), дата: 8 декабря, 2009 - 20:54
#permalinkнаписано чтобы напомнить но никак не объяснить. Оценка 2
Автор: Астра (не зарегистрирован), дата: 22 декабря, 2009 - 20:10
#permalinkне могу въехать в "запоминающие скобки" (вроде, куда уж проще)
Мне нужно из страницы выбрать и запомнить определенные числа (положительные и отрицательные) . Посоветовали воспользоваться match, а числа обрамить псевдотегами. вот какой паттен в итоге получился:
но когда проверяю alert (rates); массив выдает вместе с псевдотегами (типа 1, -1)
где я ошиблась
Автор: Гость (не зарегистрирован), дата: 29 декабря, 2009 - 17:11
#permalinkОбъясните разницу между [0-9] и \d
В коде ниже [0-9] и \d дают разные результаты, true и fasle соответственно.
Кодировка файла utf-8
var pattern = new RegExp('^[0-9]{7,8}$'); var str='1234567'; alert(pattern.test(str));Автор: bga (не зарегистрирован), дата: 8 января, 2010 - 16:54
#permalinkвот еще полезный метод для оптимизации регулярных выражений RegExp.compile
Автор: Ц52 (не зарегистрирован), дата: 23 января, 2010 - 16:24
#permalinkВот тут смотрю ваше руководство
Набор символов. Находит любой из перечисленных символов. Вы можете указать промежуток, используя тире. Например, [abcd] - то же самое, что [a-d]. Найдет 'b' в "brisket" и 'c' в "ache".
Очень не понятно почему 'c' в "ache" . Сначала проверил а - английская (подумал что русская сначала). Потом зашел http://www.pcre.ru/eval/ и проверил там. Выдает результат поиска:
0: (a)
1: (c)
Т.е. найдет и а и c. Вопрос так почему будет c?
Автор: tuschkan, дата: 23 февраля, 2010 - 14:19
#permalinkЗадача состоит в том, чтобы проверять вводимое значении на соответствие шаблону 4 цифры/2 цифры или тоже самое без"/" (номер дома через дробь: 457/5) или просто номер дома.
У меня такое выражение:\d{1,4}\/\d{1,2}|\d{1,4}
но оно допускает и буквы и точки и прочие знаки. Подскажите, пожалуйста, как мне разрешить только цифры и косую?
Автор: T0xA (не зарегистрирован), дата: 4 марта, 2010 - 03:08
#permalinkподскажите пожалуйста
var myRe = /(.*)\.(.*)/;
myRe.exec('el1.el2');
возвращает: el1.el2,el1,el2
el1.el2 - мне не нужно.
я догадываюсь из-за чего это происходит, но возможно ли как то сделать чтоб не проходило условие в котором есть точка?
Автор: immeasurability (не зарегистрирован), дата: 12 марта, 2010 - 15:21
#permalinkподскажите пжз!
есть выражение replace(/(\[.*\])/gi,'xxx') которое меняет все что находится в скобках на xxx что дописать в эту часть /(\[.*\])/gi для того чтобы менялось все что в скобках и один любой символ с лева?
к примеру есть текст www-[yyy]-zzz нужно чтоб все что в скобках и знак минус был заменен -[yyy], но с лева может быть не только знак минус но и любой другой символ!
Спасибо за внимание!!!
Автор: EugenyK, дата: 8 апреля, 2010 - 20:33
#permalinkЯ так понимаю, что в javascript в отличии от php PCRE, чтобы точка "." обозначала точку в операторе альтернативы [], её следует экранировать?
Автор: Rem (не зарегистрирован), дата: 23 апреля, 2010 - 21:19
#permalinkВопрос по теме. Думаю, и другим будет полезен. Помогите ПОНЯТЬ.
В чате (на аяксе) есть функция замены длинных слов (многие пишут, игнорируя пробелы). Вот она:
var text = msg.replace(/(.[^\s\<\>]{15})/gi, "$1\n");Работает, но.. как?
Что значат здесь знаки больше/меньше с регеспами?
Автор: Гость (не зарегистрирован), дата: 2 июня, 2010 - 01:30
#permalinkПрочто спасибо))))
Автор: mosf1k (не зарегистрирован), дата: 13 июля, 2010 - 14:33
#permalinkПодскажите, каким образом можно отлавливать все знаки препинания?
например, если нужно удалять запятые и точки из входной строки?
Автор: Гость (не зарегистрирован), дата: 28 июля, 2010 - 03:23
#permalinkЕсть строка состоящая из натуральных чисел, разделенная ","
надо преобразовать в массив.
Пример (работает), если мы знаем размерность массива
var a = /(\d+)[\,](\d+)[\,](\d+)[\,](\d+)/.exec("10,150,0,1230");
alert("a[0] = " + a[0]+'\n'+
"a[1] = " + a[1]+'\n'+
"a[2] = " + a[2]+'\n'+
"a[3] = " + a[3]+'\n'+
"a[4] = " + a[4]
);
Если мы не знаем размерности массива (числа натуральных строк в строке)
Пример (типа) (НЕ РАБОТАЕТ):
var a = /(\d+)[[\,](\d+)]*/.exec("10,150,0,1230,11,1234");
Можно ли обойтись без дополнительного цикла (только регулярным выражением)?
Автор: Гость (не зарегистрирован), дата: 31 июля, 2010 - 11:23
#permalinkСуществует ли разница при работе регулярного выражения с английскими и русскими буквами?
Что-то русские буквы не ищутся..
Автор: Increazon, дата: 13 сентября, 2010 - 19:26
#permalinkЕсть строка:
Как с помощью регулярных найти HTML теги, при этом выделить все в массив:
Автор: Гость (не зарегистрирован), дата: 14 октября, 2010 - 17:23
#permalinkКлево! Мне понравилось!
Раньше я не пользовался регулярными выражениями (задач типичных для их использования не было), но вот прочитал статью и применил на работе (правда я программирую на Java:)). Статья все подробно и хорошо объясняет, спасибо!
Автор: Гость (не зарегистрирован), дата: 15 октября, 2010 - 12:03
#permalinkПомогите пожалуйста найти в url один из параметров GET-запроса.
Вот такое выражение что-то ничего не находит:
find_url_menu = /(\?.*$)menu=[0-9]+\1/
Автор: Mickers (не зарегистрирован), дата: 27 октября, 2010 - 11:41
#permalinkИмеется строка типа "\\Volume 1\test\range\12345.jpeg"
как ее преобразовать к UNIX-виду "//Volume 1/test/range.jpeg"?
\t воспринимаются как табуляция, \12 -спецсимволы и пр.
Автор: shkur, дата: 3 ноября, 2010 - 01:53
#permalinkкак в regexp впихнуть переменную?
var nLastCol = 8; var str = "--,--,--,--,--,--,--,--" //(ну на самом деле это Object) if (/(--,?){8,8}/i.test(ss.getRange(ss.getLastRow(), 1, 1, nLastCol).getValues().toString())){ Browser.msgBox('TRUE'); } else {Browser.msgBox('FALSE');}вместо {8,8} надо поставить {nLastCol,nLastCol}
Автор: Гость (не зарегистрирован), дата: 15 ноября, 2010 - 01:45
#permalinkКак заставить это работать с русскими символами?
Автор: Гость (не зарегистрирован), дата: 15 ноября, 2010 - 01:46
#permalinkКак заставить это работать с русскими символами?
Автор: SergO_Cz (не зарегистрирован), дата: 15 ноября, 2010 - 18:42
#permalinkЕсть строка, состоящая из составных имен, например: "Klein Stadt Prag, Praga in Bohemia". Надо удалить только те пробелы, которые идут после запятой. Почему это выражение
alert("Klein Stadt Prag, Praga in Bohemia".replace(/(?:,)\s/g, ''));удаляет и запятую, которая, вроде как, в незапоминающих скобках?
Автор: Гость (не зарегистрирован), дата: 19 ноября, 2010 - 15:34
#permalinkвы юзаете /i, /gi и т.п., но ничего о них не пишете
вы не находите что неплохо бы добавить их описание ?
или для них здесь есть отдельная страничка ? - тогда киньте ссылку
Автор: Александр_ (не зарегистрирован), дата: 7 января, 2011 - 16:43
#permalinkКак сделать так, чтобы при нахождении любого символа \s или \W был возвращён ноль (ложь)
так не работает
и так тоже..
Автор: Гость (не зарегистрирован), дата: 9 января, 2011 - 16:42
#permalinkЕсть строка, например - "_ха_блаблабла_хо_"
нужно получить содержимое обрамленное какими-то знаками (в данном случае - подчеркивания), без самих знаков.
делаю:
полуаю:
а мне надо:
можно ли этого добиться с помощью выражений?
Автор: eval, дата: 12 марта, 2011 - 14:41
#permalinkпопалась строка напичканая символами типа " и пробелов ) сколько уже перегуглил и переяндексил + перечитал статей и перепробовал вариантов ... ничего не выходит !!! составьте пожалуйста регу на replace для очистки всего кроме цифр и букв расположенных вместе типа хеша пример : куча пробелов - 914nm1413nm14 " и дальше куча пробелов...
заранее благодарен !!!
Автор: Researcher, дата: 23 марта, 2011 - 15:55
#permalinkfunction example(value) { return (/^abc$/gi).test(value); } alert(example("abc") + ", " + example("abc"));вот такая штука везде кроме фф3 выдает true, true, а в нем - true, false.
по какой-то неведомой причине фф3 считает, что при повторном вызове функции можно использовать ссылку на старый объект регулярки, а не создавать новый. если изменить конструкцию на new RegExp, то все нормально становится.
Автор: Гость (не зарегистрирован), дата: 11 апреля, 2011 - 13:09
#permalinkКак заставить работать со всеми буквами UTF-8?
Тут все предлагают для русских буквы использовать
[А-Яа-я]
А как быть с другими алфавитами?
В PHP это решается вот так:
preg_replace("/[^\p{L}0-9\+\-\_:\.@ ]/u", "", $_string));
\p{L} = все буквы
/u = работать с UTF-8
Как заставить JavaScript работать со всеми буквами всех алфавитов?
\w не подходит, так как вырезает все символы больше 128.
Автор: z700i, дата: 13 апреля, 2011 - 15:56
#permalinkчто здесь означает \\$1 и что оно делает?
Автор: Гость (не зарегистрирован), дата: 19 апреля, 2011 - 17:08
#permalinkу меня проболема возникла с командой test.Ввожу 100 выводит слово ERROR
var pricePattern = /^[0-9]+$^/;
var errorMessage = "";
function checkPrice(price)
{
if(!pricePattern.test(price)) {
alert("error");
errorMessage +="*" + errorPrice + "\n";
}
}
Автор: Гость (не зарегистрирован), дата: 14 мая, 2011 - 14:25
#permalinkВозникла проблема:
как заменить символ "\" в строке, если после него идет символ n, то не находит.
в строке может идти любой символ после символа "\". мне нужно просто найти этот символ.
помогите пожалуйстаа
Автор: guffer, дата: 25 мая, 2011 - 08:38
#permalinkпомогите плиз решить такую задачку:
мне нужно превратить абсолютный путь к файлу в относительный, то есть
var res='src="file:D:///sss/content/myimg.jpg"'.replace('тутНезнаю','src=\''content');в пути всегда есть папка "content" мне нужно отсечь все что идет до этой папки. я пробовал писать:
и еще кучу вариантов, но как-то ни какой замены не происходит.
Автор: kobezzza, дата: 25 мая, 2011 - 12:39
#permalink1) Чтобы заменить символ \, нужно написать \\.
2) var res='src="file:D:///sss/content/myimg.jpg"'.replace(/.*?content\/(.*?)"/, 'src="content/$1"');
Автор: uchta (не зарегистрирован), дата: 31 мая, 2011 - 23:25
#permalinkТолько начинаю во всём разбираться!Помогите пожалуйста написать регу, которая будет искать в текстовом файле слова между словами start и end и менять их на слово mid. Очень нужно!Заранее благодарна!!!
Автор: bendator (не зарегистрирован), дата: 2 июня, 2011 - 14:15
#permalinkНикак не могу решить проблему. Javascript-модуль получает RegExp извне, и строку, которую надо проверить по полученному рег.выражению.
Например, получено рег.выражение "[0-9]{5}|[0-9]{8}" и строка "102040".
Методы test и match дают неправильный результат:
strRe = "[0-9]{5}|[0-9]{8}"; src = "102040"; var re = new RegExp(strRe); var result1 = re.test(src); // возвращает true, что неверно Проверяем при помощи match var result2 = src.match(re); // тоже находит совпадения, т.к. result2.length=1Как правильно построить проверку? Добавление символов ^ и $ в начало и конец строки с рег.выражением проблему не решают.
Автор: Котоваська (не зарегистрирован), дата: 7 июня, 2011 - 05:47
#permalinkКак убрать не значищие нули в дробном числе?
Автор: Николай123 (не зарегистрирован), дата: 8 июля, 2011 - 16:37
#permalinkЗдравствуйте. есть небольшая проблемка.
есть такая строка
h_ttp://mysite.com/cat1/cat2/
как при условии что в строке нету слова cat3 выбрать все что после h_ttp://mysite.com/
Автор: Николай123 (не зарегистрирован), дата: 8 июля, 2011 - 16:48
#permalinkи нужно сделать это только с помощью рег. выражения( сделал отдельно выбор ^h_ttp://mysite.com//(.=?.*)$
отдельно как бы условие ^((?!cat3 \.svc).)*$ при котором если есть cat3 в строке то оно выбирает только последний символ
Автор: Dil (не зарегистрирован), дата: 12 июля, 2011 - 09:38
#permalinkЗДРАВСТВУЙТЕ ВСЕМ! ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Мне нужен регекс который определяет только телефонные номера, я написал такой:
var regex = /\b\(?(\d{3,6})?\)?[. -]?(\d{2,3})[. -]?(\d{2,4})?[. -]?(\d{2,4})?\b/;
но он, помимо номеров, определяет год, цены и т.д. (вобщем почти все числа). Как быть? Нужно чтобы определял только номера!
Примеры номеров: 1111 123456, 123456, 12-34-56, 123-456, 123, 1234, (111) 123-45-67
Спасибо заранее!
Автор: Денн (не зарегистрирован), дата: 21 августа, 2011 - 20:10
#permalinkПодскажите, кто может
есть скрипт, цель которого в полученной строке, например, Сайт+для+гостиничного+бизнеса заменить все плюсы на пробелы. Так вот получается заменить плюс только после первого слова. Т.е скрипт выполняется один раз. Как сделать, чтоб замена была по всей строке?
<script type="text/javascript"> var urlpage = document.URL; var urlik = getVarValueFromURL(urlpage, 'zakaz'); var decodeurlik = decodeURI(urlik) re = /\+/; str = decodeurlik; newstr = str.replace(re, " "); document.getElementById('tema').value = newstr; </script>Автор: Денн (не зарегистрирован), дата: 22 августа, 2011 - 12:38
#permalinkРешил проблему, подставив в
модификатор g, позволяющий вести поиск по всей строке, т.е получается
re = /\+/<strong>g</strong>; str = decodeurlik; newstr = str.replace(re, " "); document.getElementById('tema').value = newstr;Автор: денн (не зарегистрирован), дата: 22 августа, 2011 - 12:40
#permalinkP.S в указанной строке теги strong использовать в коде не надо
Автор: Questioner, дата: 14 сентября, 2011 - 07:54
#permalinkКак сделать так, что бы в строке все числа( /[0-9]+/gim ) не находящиеся в скобках переносились через символ "=" и + заменялся бы на -, - на +, * на /, и / на *?
Автор: Mihkach (не зарегистрирован), дата: 16 ноября, 2011 - 21:57
#permalinkВ самом начале статьи нужно поменять местами примеры в этом фрагменте:
При втором вызове - т.к регулярное выражение в кавычках, то нужно дублировать \
// эквивалентны re = new RegExp("\\w+") re = /\w+/Автор: mancu (не зарегистрирован), дата: 22 ноября, 2011 - 15:54
#permalinkМой мирФотоВидеоБлог
Мирослав Воеводин на ответах Просветленный (20051)
Открыт: 27 минут назад, будет выставлен на голосование через 3 дня
JavaScript!? Регулярное выражение
пример: helloworld/something_example.ref
Как регуляркой выбрать то, что идет после символа _ и до .ref
т.е. example
я делаю
var regular = /(?<=_).+?(?=.ref)/i;
в итоге получаю invalid quantifier
, пробую динамически:
var regular = new RegExp('(?<=_).+?(?=.ref)','gi');
, результат тот же, мне кажется ему 1-ое условие не нравится, так как же все-таки правильно?
Автор: Гость, дата: 4 января, 2012 - 01:47
#permalinkСпонтанно возникла одна задачка, которую пока решить не хватает опыта, с регэкспами недавно начал знакомиться. Суть: строка состоит из значений, разделенных запятыми (как перечисление элементов массива), значения могут быть такими: [Ss] || [Ee] || [adhADH][число от 1 до 999]. Надо провести замены и получить строку с четырехзначными числами, по принципу: Ss заменяется на 4000, Ee заменяется на 9999, Aa на 3, Dd на 2, Hh на 1, все недостающие символы между [AaDdHh] и числом заменяются нулями. Собственно, в последнем и загвоздка:) Для примера, как это должно работать:
исходная строка: 's,a112,d8,h19,e,a1';
результат замен: '4000,3112,2008,1019,9999,3001'.
Заранее благодарю, если кто решит помочь:)
Автор: Гость (не зарегистрирован), дата: 5 января, 2012 - 21:25
#permalinkВ формулировке задачи указано, что результатом являются четырёхзначные числа, но если в 'd8' заменить d на 2, получается '28', а надо получить '2008', т.е. - все недостающие символы между буквой и числом заменяются нулями. Иначе говоря, "вес" букв: a = 3000, d = 2000, h = 1000, и к ним надо добавить числа, идущие после них.
P.S. Сделал кое-как, в принципе работает правильно но много замен:) Если предложите вариант получше, буду очень рад:) (читает значение переменной из textarea в документе и выводит уже сконвертированный результат)
function Convert() { var converter = document.getElementById('uncoded').value; function repl(regx,str) { converter = converter.replace(regx,str); } repl(/([^0-9][0-9]{2})(?![0-9])/gim,'0$&'); repl(/(?:[^0-9])([1-9]{1})(?![0-9])/gim,'00$&'); repl(/00a/gim,'a00'); repl(/0a/gim,'a0'); repl(/00d/gim,'d00'); repl(/0d/gim,'d0'); repl(/00h/gim,'h00'); repl(/0h/gim,'h0'); repl(/s/gim,'4000'); repl(/e/gim,'9999'); repl(/a/gim,'3'); repl(/d/gim,'2'); repl(/h/gim,'1'); Write(converter,'fff','000'); }Автор: ALARMus, дата: 6 января, 2012 - 11:44
#permalinkПомогите с правильностью выражения.
Необходимо проверить правильность ввода МАС адреса, если не удовлетворяет условию, то выдать какой-то результат (например false в переменную)
т.е. 6 пар символов с ограничением: цифры от 0 до 9 или лат. буквы от A до F, разделенные двоеточием.
function isValidMacAddress(macAdd) { if macAdd.length = 17 { var RegExPattern = /^([\d[A-F]{2}:){5}[\d[A-F]{2}$/; return macAdd.test(RegExPattern) } else return false; } }1) не ошибся ли я в коде ?
2) правильно ли составлен паттерн -
а то есть вот такой вариант - не знаю чем он отличается и подходит ли
/^\s*([\d[A-F]{2}:){5}[\d[A-F]{2}\s*$/
Автор: ALARMus, дата: 6 января, 2012 - 08:23
#permalinkкстати критика\поправки статьи принимаются ?
Автор: Гость (не зарегистрирован), дата: 13 января, 2012 - 14:47
#permalinkРебята, помогите - есть строка:
{"Title":"The Long Goodnight: A Film About Phil Collins","Year":"2007","Rated":"N/A","Released":"5 Sep 2007","Genre":"Documentary, Music","Director":"Anthony Mathile","Writer":"N/A","Actors":"Ronnie Caryl, Brad Cole, Phil Collins, Luis Conte","Plot":"In 2004 I came to a major decision in my life. I decided to stop my seemingly endless days of touring...","Poster":"N/A","Runtime":"1 hr 18 mins","Rating":"N/A","Votes":"N/A","ID":"tt1212426","Response":"True"}
Нужно распарсить в массив типа $str[Year] = [2007], $str[Rated] = [N/A] и т.д.
Автор: CRIO (не зарегистрирован), дата: 21 января, 2012 - 00:18
#permalinkАвтор: alexandr_v-vich, дата: 31 января, 2012 - 16:34
Спасибо, сложно, но информативно для первого знакомства
Автор: Гость (не зарегистрирован), дата: 3 февраля, 2012 - 06:14
#permalinkВопрос. Символ ` учитывается в регулярных выражениях так же как буквы/цифры/etc, или же является каким-либо спецсимволом (не упомянутым здесь, как показывает поверхностное прочтение)?
Заранее спасибо.
Автор: Foxmatrix (не зарегистрирован), дата: 16 февраля, 2012 - 16:08
#permalinkПодскажите как можно сделать, у меня есть строка в которой содержится версия продукта например 4,10или например4 10 или цифры другим знаком каким нибудь разделены а мне нужно получить строку вида 4.10... Как я могу это сделать? Ну если хотябы не брать сложные варанты а только пробел, точку, запятую, слеш и все )
Автор: Sober_exe, дата: 28 февраля, 2012 - 08:50
#permalinkРебята, нужна помощь.
в поле input вставляю строку содержащую некий перенос строки, например из этого же раздела скопировать строку кода "var myArray = myRe.exec("cdbBdbsbz");
". И в input получаются 2 строки, так вот этого не должно быть, нужно в строку.
Пишу следующее регулярное выражение:
$('input.search_fild').change(function(){
var enter = $(this).val();
var newString = enter.replace(/\r\n/, /\s/);
alert(newString);
});
т.е. меняю перенос строки на пробел. И это не срабатывает, всё равно в input 2 строки.
Для проверки делал:
$('input.search_fild').change(function(){
var enter = $(this).val();
var newString = enter.replace(/абв/, "1");
alert(newString);
});
в input писал "абв" - работает, меняется на "1".
P.s.: Кстати change отрабатывает после потери фокуса инпутом, а как на лету?
Автор: Гость (не зарегистрирован), дата: 27 апреля, 2012 - 10:35
#permalinkесть одна замечательная вещица для работы с регулярками - RegexBuddy. Под рукой, извините, нет ни ссылки, ни самой штуки. Но кому не лень, советую приглядеться. Содержит в себе подсветку регулярки, инструменты для тестов, примеры для множества языков + библиотеку самых часто используемых регулярок
Автор: Гость (не зарегистрирован), дата: 15 мая, 2012 - 22:47
#permalinkКак удалить одинаковые символы в строке?
Автор: HImIK (не зарегистрирован), дата: 26 июля, 2012 - 10:18
#permalinkЭто называется "запоминающие скобки".
Это называется группы!
Автор: Гость (не зарегистрирован), дата: 20 августа, 2012 - 17:29
#permalinkПомогите разобраться
Нужно регулярное выражение, которое вырезает все скрипты из страницы
Все остальное должно оставаться нетронутым
Я написал такое, только оно вырезает все, что попадает между первым открывающимся тегом скрипт и последним закрывающимся
например:
Что-то 1
Это надо вырезать
Что-то 2
Это тоже надо вырезать
Конец
У меня получается в результате:
Что-то 1 Конец
А должно быть: Что-то 1 Что-то 2 Конец
Само выражение:
re = new RegExp("|\\stype=.text\\/javascript.>).*<\\/script>", "g");
Автор: Гость (не зарегистрирован), дата: 20 августа, 2012 - 17:33
#permalinkПомогите разобраться
Нужно регулярное выражение, которое вырезает все скрипты из страницы
Все остальное должно оставаться нетронутым
Я написал такое, только оно вырезает все, что попадает между первым открывающимся тегом скрипт и последним закрывающимся
например:
У меня получается в результате:
Что-то 1 Конец
А должно быть: Что-то 1 Что-то 2 Конец
Само выражение:
re = new RegExp("|\\stype=.text\\/javascript.>).*<\\/script>", "g");Автор: Ник (не зарегистрирован), дата: 23 августа, 2012 - 08:22
#permalinkНарод, помогите кто может. Только разбираюсь во всём, потихоньку!!!
Есть строка:
$(function() { $("#blockz<strong>XXXX</strong>").capslide({Которая задаёт поведение в блоках с id "blockzХХХХ", где ХХХХ - это случайные цыфры. Что нужно добавить, чтобы она выбирала все имеющиеся на странице блоки без разницы, какое цифровое id (после blockz) они имеют?
Спасибо!
Автор: Гость (не зарегистрирован), дата: 3 сентября, 2012 - 12:30
#permalinkНарод, помогите кто может.
[3, 11, 15, 16, 19, 23, 30, 39, 41, 44, 48, 56, 61]
на выходе надо
[3; 11; 15; 16; 19; 23; 30; 39; 41; 44; 48; 56; 61]
Автор: Гость (не зарегистрирован), дата: 3 сентября, 2012 - 12:30
#permalinkНарод, помогите кто может.
[3, 11, 15, 16, 19, 23, 30, 39, 41, 44, 48, 56, 61]
на выходе надо
[3; 11; 15; 16; 19; 23; 30; 39; 41; 44; 48; 56; 61]
Автор: Гость (не зарегистрирован), дата: 3 сентября, 2012 - 12:30
#permalinkНарод, помогите кто может.
[3, 11, 15, 16, 19, 23, 30, 39, 41, 44, 48, 56, 61]
на выходе надо
[3; 11; 15; 16; 19; 23; 30; 39; 41; 44; 48; 56; 61]
Автор: Гость (не зарегистрирован), дата: 9 ноября, 2012 - 21:40
#permalinkВсем Доброго времени суток!
Народ, помогите, пожалуйста. Есть вот такой код:
Visit
Как его изменить, чтобы одиночный пробел между словами заменялся на подчёркивание (_), а двойной пробел просто сливался. Т.е вот так должно получиться: шла_маша_пошоссе.
Автор: Гость (не зарегистрирован), дата: 20 ноября, 2012 - 09:43
#permalinkСкажите пожалуйста метод "test" что возвращает в качестве результата? "True" "false"? или что то другое?
Автор: kama (не зарегистрирован), дата: 30 декабря, 2012 - 10:49
#permalinkА как задавать условие как это: x(?!y), только для предшествующих символов?
Автор: Гость (не зарегистрирован), дата: 19 января, 2013 - 23:06
#permalinkЕсть такая строка
rgb(200, 200, 200) 34px 34px 34px, rgb(50, 50, 50) 0px -5px 23px, rgb(0, 0, 0) -43px -50px 35pxКак её разбить на подстроки так, чтобы в каждой подстроке был цвет, т.е rgb(R,G,B), и координаты т.е. Xpx Ypx Zpx?
Пример:
rgb(200, 200, 200) 34px 34px 34pxrgb(50, 50, 50) 0px -5px 23pxrgb(0, 0, 0) -43px -50px 35pxАвтор: Гость (не зарегистрирован), дата: 28 января, 2013 - 10:57
#permalinkДоброго времени суток, уважаемые специалисты.
Впервые столкнулся с регэкспами... Пока обходился без него, но жизнь заставила).
Не могу сформировать шиблон для задачи:
Нужно проверить, подходит ли строка под шаблон ЧИСЛО.ЧИСЛО
На данный момент додумался вот до этого:
1 function CheckChain(Chain){ 2 var validRegExp = /^(([0-9\-])+\.)+([0-9]{1,2})+$/; 3 var rslt = Chain.match(validRegExp); 4 return rslt;}Работает, но есть 2 НО:
1) ошибка при выполнении, если Chain=Null (не оч. критично)
2) под шаблон попадают также значения типа ЧИСЛО.ЧИСЛО.ЧИСЛО.ЧИСЛО (1.2.17.56), что неправильно.
Подскажите, пожалуйста, где я не прав, и как должен выглядеть шаблон. Буду благодарен за пояснения.
Заранее благодарю всех откликнувшихся.
Автор: Yar (не зарегистрирован), дата: 31 января, 2013 - 02:05
#permalinkЕсть строка, если совсем упрощенно, то выглядит она как "aba"
Небходимо находить в этой строке все: "ab" и "ba".
Т.к. индекс с которого начинать следующий поиск растет в данном примере будет найдено либо "ab" либо "ba", но в данном примере результатом поиска необходимо получать оба значения т.е "ab" и "ba", а не одно из них. Есть ли какое-либо изящное решение в регулярных выражениях для такого типа поиска без циклов и прочих надстроек?
Естественно пример упрощён до безобразия, в реальности строка в которой нужно искать все возможные варианты значительно больше и искомые значения значительно сложнее. Или может быть можно как-нибудь управлять lastIndex'ом (индекс, с которого начинать следующий поиск)?
P.S. я не ищу решение данного вопроса т.к. нагромоздить я умею и без чужой помощи =), я скорее ищу изящное (короткое и простое) решение или метод который мне неизвестен (если что пропустил в статье, то заранее прошу прощения).
Автор: Victoria Malaya (не зарегистрирован), дата: 14 мая, 2013 - 09:31
#permalinkДоброго времени суток!
Подскажите пожалуйста, как правильно написать регулярное выложение для поиска определенного вхождения строки внутри разметки.
Вот пример разметки:
Scenario:
ABCDEFG   Scenario:
А вот то как это выглядит для пользователя:
Scenario:
ABCDEFG Scenario:
Мне приходит строка с разметкой и нужно определённым образом отформатировать строку "Scenario:", если она находится в начале строки, если же перед это строкой предшествуют какие-либо другие символы, то строка не должна быть найдена. При этом все предшествующие знаки пробелов должны быть сохранены.
В первом случае мне нужно найти строку "Scenario:", т.к. визуально она находится в начале строки перед которой предшествуют некоторое количество пробелов. Во втором же случае строка "Scenario:" не должна быть найдена, т.к. перед этой строкой предшествуют символы "ABCDEFG".
Буду очень признательна, если вы мне поможете решить эту задачку
Автор: Виктория Малая (не зарегистрирован), дата: 14 мая, 2013 - 09:37
#permalinkДоброго времени суток!
Подскажите пожалуйста, как правильно написать регулярное выложение для поиска определенного вхождения строки внутри разметки.
Вот пример разметки:
<p> Scenario: </p>
<p> ABCDEFG   Scenario:</p>
А вот то как это выглядит для пользователя:
Scenario:
ABCDEFG Scenario:
Мне приходит строка с разметкой и нужно определённым образом отформатировать строку "Scenario:", если она находится в начале строки, если же перед это строкой предшествуют какие-либо другие символы, то строка не должна быть найдена. При этом все предшествующие знаки пробелов должны быть сохранены.
В первом случае мне нужно найти строку "Scenario:", т.к. визуально она находится в начале строки перед которой предшествуют некоторое количество пробелов. Во втором же случае строка "Scenario:" не должна быть найдена, т.к. перед этой строкой предшествуют символы "ABCDEFG".
Буду очень признательна, если вы мне поможете решить эту задачку
Автор: Гость (не зарегистрирован), дата: 25 мая, 2013 - 20:59
#permalinkВсем Доброго времени суток!
Народ, помогите, пожалуйста. Есть длинная строка, в ней нужно заменить все ".", ",", "\" если они следуют за алфавитом (но не за цифрами) на " "?
Автор: Semen211 (не зарегистрирован), дата: 30 мая, 2013 - 11:37
#permalinkесть строка "100 вылаождыва, +12"
вопрос
как вытащить последнии цифры.
я делаю так:
var aa = "100 вылаождыва, +12"
parseInt(aa.replace(/\D+/g,""));
что еще надо добавить?
у меня выдает оба числа 100 и 12, как вытащить только 12?
Автор: samogon13 (не зарегистрирован), дата: 13 июня, 2013 - 17:41
#permalinkПодскажите если ссылка
сайт.ру/view_main_right.php?id=3 id=номер статьи как написать так? сайт.ру/\S{1,}Автор: Гость (не зарегистрирован), дата: 13 июня, 2013 - 17:50
#permalinkПодскажите если ссылка
/view_main_right.php?id=3 id=номер статьи как написать так? /\S{1,}Автор: lancer, дата: 8 июля, 2013 - 15:59
#permalink[quote]* Обозначает повторение 0 или более раз. Например, /bo*/ найдет 'boooo' в "A ghost booooed" и 'b' в "A bird warbled", но ничего не найдет в "A goat grunted".[/quote]
Объяснено совсем непонятно на мой взгляд, повторения чего и как?. Возможно этот вопрос поможет понять.
Почему если в "A bird warbled" находиться b, то в "A goat grunted" не находиться o?
Автор: Гость (не зарегистрирован), дата: 12 сентября, 2013 - 22:59
#permalinkнарод, надо подсчитать сколько символов "а" в слове "zanzara", есть вариант:
var i=0, reg = RegExp("a", "g"); "zanzara".replace(reg, function(){ i++ });и еще один:
Array.prototype.forEach.call("zanzara",function(ch){if(ch==="a") i++});может кто-то знает что-ниб попроще
Автор: mobipak (не зарегистрирован), дата: 14 сентября, 2013 - 07:49
#permalinkКак-то так:
Автор: Гость (не зарегистрирован), дата: 26 ноября, 2013 - 15:09
#permalinkСтрока: "M 610.5 30 L 610.5 155".
Необходимо получить число между "M" и "30", в данном случае оно "610.5". Не совсем понимаю как. Помоги плиз.
Автор: Кирилл Друцкой (не зарегистрирован), дата: 11 декабря, 2013 - 21:38
#permalinkПытаюсь написать регулярное выражение, которое будет отбирать все файлы, не, которые не начинаются с буквы "j" и не имеют расширений EXE и DLL.
Исходя из вышеизложенного материала получилось выражение:
Но оно не работает. Буду очень признателен за помощь.
Автор: s_drud, дата: 24 января, 2014 - 18:00
#permalinkА кто-нибудь может показать пример работающего варианта с незапоминающими скобками?
Пробовал по всякому-запоминают!
Автор: Pavel54 (не зарегистрирован), дата: 18 февраля, 2014 - 17:25
#permalinkРебята, у меня такой вопрос. Почему не работает регулярное выражение в отрицании:
Казалось бы в строке s содержится буква a, следовательно отрицание должно давать false. Однако выходит true
Автор: Гость (не зарегистрирован), дата: 4 июня, 2014 - 10:44
#permalinkДрузья, помогите составить выражение.
Есть строка типа:
name1#query1&name2#query2$name3#query3
нужно получить query для конкретного name
я вижу это так:
/^|\&name2\#(\w*)\&|$/i
Автор: Гость (не зарегистрирован), дата: 14 июня, 2014 - 20:23
#permalinkname3#(\w+?)(\$|&|$)
$ - привязка к концу строки
name1-3 смотреть в первой группе
Автор: Гость (не зарегистрирован), дата: 30 августа, 2014 - 15:55
#permalinkЗдрасте !
Помогите разобраться с регулярным выражением. Есть некий скрипт в котором есть регулярное выражение, которое ищет совпадение в тексте. Когда текст представляет из себя набор строк, в каждой из которых находится одно совпадение с регулярным выражением, то всё работает как надо. Но дело в том, что теперь текст стал в одной строке и находится только одно совпадение, которое самое последнее.
$transactionPattern = "/.*"
."\s(\d\d\d)"
."\s+(\d+\.\d\d)"
."\s+(\d+\.\d\d)"
."\s+(\d+\.\d\d)"
."(\d+)"
."(\d\d\d\d\d)"
."(\d\d\d\d\d\d)"
."(201\d\d\d\d\d)\s+"
."\d+(201\d\d\d\d\d)"
.".*/";
Автор: Гость (не зарегистрирован), дата: 9 сентября, 2014 - 16:58
#permalinkМожет ли тут кто-нибудь ответить на вопрос : почему "xy".match(/x?/) возвращает ["x"] , а "xy".match(/y?/) возвращает не ["y"] ?
Автор: Гость (не зарегистрирован), дата: 6 января, 2016 - 22:29
#permalinkЕсть ли метод сделать реплейс в /g для меняющегося аргумента.
Например, пишем:
text= 'Банан';
variable_text='ан';
alert (text.replace(/ан/g,'1')
- получаем результат "Б11", но хотим делать реплейс не по 'ан', а по variable_text
alert (text.replace(variable_text/g,'1') - не работает. Как надо?
Автор: Гость (не зарегистрирован), дата: 26 мая, 2016 - 23:17
#permalinkПомогите разобраться.
Есть функция следующего вида:
// replace a regex match with a new string in a file globally
function regexReplaceInFile(aRegex,aReplace,aFile){
txt = readFile(aFile,false);
var rx = new RegExp(aRegex, "g");
txt = txt.replace(rx,aReplace);
saveFile(aFile,txt);
Как мне ее вызвать, чтобы она что-то там на что-то меняла?
Благодарю за ранее!
Автор: Гость (не зарегистрирован), дата: 10 октября, 2016 - 22:24
#permalinkпомогите, пож-та, составить регулярное выражение, которое выведет запросы, содержащие от 3 до 8 слов, каждое слово от 2 до 5 символов.
у меня получилось, что выводит нужное кол-во слов, но как к ним привязать кол-во символов в каждом слове не понимаю..
^\S+(\s\S+){2,7}$
Автор: Гость №1 (не зарегистрирован), дата: 16 ноября, 2016 - 01:09
#permalinkprint ???
Например, вот такой скрипт:
var myRe = /ab*/g;
var str = "abbcdefabh";
while ((myArray = myRe.exec(str)) != null) {
var msg = "Found " + myArray[0] + ". ";
msg += "Next match starts at " + myRe.lastIndex;
print(msg);
}
Этот скрипт выведет следующий текст:
Found abb. Next match starts at 3
Found ab. Next match starts at 9
---------------------
Этот скрипт ничего не выведет.
Автор: Гость (не зарегистрирован), дата: 26 февраля, 2017 - 06:52
#permalinkХЭЛП Ребят :- )
Есть такой вот таймер реагирующий на строчку if (testCliks === 1)
if (testCliks === 1){
function timer() {
var obj=document.getElementById('timer_inp');
obj.innerHTML--;
if(obj.innerHTML==0){
alert('ВРЕМЯ ВЫШЛО :- (')
location.reload();
setTimeout(function(){},1000);}
else{setTimeout(timer,1000);}
}
setTimeout(timer,1000);
}
Проблема в том, каждое нажатие на if (testCliks === 1) (это блок игрового поля, типа карточка - тыкаешь, она что-то показывает) ускоряет таймер и он отсчитывает время как бешеный.
Нужно что бы таймер включался один только раз при условии if (testCliks === 1). Ну или как угодно, лишь бы работал по человечески :- )
Проблема вроде как флагом решается, но я не соображу как его тут поставить. Помогите с проблемой люди добрые
Автор: PROPHESSOR (не зарегистрирован), дата: 10 марта, 2017 - 22:47
#permalinkНужно регулярное выражение для того, что бы
\t\t переводилось в | -
А \t в -
(аналогично \t\t\t\t\t в | | | | -)
Ибо такой код не в тренде:
Автор: Никитос (не зарегистрирован), дата: 25 сентября, 2017 - 19:15
#permalinkЕсть регулярное выражение для проверки имени пользователя /^([ЁA-ZА-Я]([ёa-zа-я])*(['-][ЁA-ZА-Я]([ёa-zа-я])*)*)$/u
Каким образом можно заставить его проверять только имена с количеством символов {3,10}
Автор: Гость (не зарегистрирован), дата: 27 апреля, 2020 - 10:41
#permalink// эквивалентны
re = new RegExp("\\w+")
re = /\w+/
Вроде так правильно:
re = /\\w+/
Автор: strel9, дата: 2 июня, 2020 - 20:13
#permalinkstr.replace(/ [\s\S]+/, '')
это регулярное удаляет все символы после сочетания "пробел"+"любой знак" 1 или более раз,
подскажите пожалуйста, как сделать чтобы удаляло
после сочетания "-"+"любой знак" 1 или более раз
Автор: LanikLanikane (не зарегистрирован), дата: 12 августа, 2022 - 10:47
#permalinkЯ с той же проблемой, ? <= и ? #n не работает. Что я должен делать? Надеюсь, я избавился от пробелов в Moviedle.
Автор: limlilimlily (не зарегистрирован), дата: 12 августа, 2022 - 10:49
#permalinkЯ с той же проблемой, ? <= и ? #n не работает. Что я должен делать? Надеюсь, я избавился от пробелов в Moviedle.