Поиск и замена в переменной
Есть переменная src:
fgdf id 35235 hddg id 45346 rryeh нужно взять все строги с "id цифры" и заменить их Я делаю вот так: src.replace(/(id) [0-9]/gi, '<a href="$1">$2</a>'); $2 не заменяется на найденные цифры. Подскажите, что я делаю не так. |
dima85,
src.replace(/(id)\s+(\d+)/mg, '<a href="$1">$2</a>') |
рони, может есть какой-то просто online сервис который позволяет делать такие конструкции? Ну не могу я сам вникнуть как такое делать.
А вас каждый раз просить тоже не хочется. |
https://regexr.com/
https://regex101.com/ сервис есть, но надо вникать, у сервиса нет искусственного интеллект, так как Рони он вас не поймет =( |
|
text text text id 34355 text text id 35235 text text id 45346 А replace может удалять вверх? То есть у меня есть переменная с line = "35235" это id 35235 в переменной src код выше. В src нужно id 35235 удалить и удалить все что до вышестоящей строчки с id *, строчек может быть разное количество. Или такие вещи лучше через функции? |
Цитата:
Цитата:
Может тебе лучше пример привести на предмет "так было", "потом стало"... :) Т.к. у тебя нет в строке Цитата:
|
В переменной line нет слова id
Примеры, целая src text text text id 34355 text text id 35235 text text id 45346 Если line = "35235" то удаляем 4-5 строчки, получаем это: text text text id 34355 text text id 45346 если line = "45346" то удаляем 6,7,8 строки, получаем: text text text id 34355 text text id 35235 |
dima85,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
</head>
<body>
<textarea id="h" name="" rows="12" >text text
text
id 34355
text text
id 35235
text
text
id 45346
</textarea>
<script>
var line = "35235", reg = new RegExp("((id)\\s+(\\d+))[^\\d]+?"+line, "mig");
h.value = h.value.replace(reg, "$1")
</script>
<textarea id="k" name="" rows="12" >text text
text
id 34355
text text
id 35235
text
text
id 45346
</textarea>
<script>
var line = "45346", reg = new RegExp("((id)\\s+(\\d+))[^\\d]+?"+line, "mig");
k.value = k.value.replace(reg, "$1")
</script>
</body>
</html>
|
Цитата:
var str = `text text
text
id 34355
text text
id 35235
text
text
id 45346`;
str = str.replace(/(id\s{1}\d+)(\D+id\s{1}35235\s)([a-zA-Z0-9\n\s]+)/im, '$1\n$3');
alert(str);
|
Цитата:
|
Цитата:
var str = `text text text id 34355 text text id 35235 text text id 45346`; str = str.replace(/(id\s\d+)[\S\s]*?id\s35235/img, '$1'); alert(str); |
ksa,
:thanks: |
ksa,
:nono: где text text id 35235 ? var str = `text text text id 34355 text text id 35235 text text id 45346`; str = str.replace(/(id\s\d+)[\S\s]*?id\s45346/img, '$1'); alert(str); |
Цитата:
|
Цитата:
|
ksa,
line это переменная смотри пост №8 самый нижний пример и пост №14 |
var line = "45346", reg = new RegExp("((id)\\s+(\\d+))[^\\d]+?"+line, "mig");
k.value = k.value.replace(reg, "$1")
Помогите пожалуйста разобрать эти строчки (id)\ - наше слово id \s+ любое количество пробелов (\\d+) - любые цифры ((id)\\s+(\\d+)) - то есть ищем до вышетоящего id с пробелом и цифрами. [^\\d] - не понимаю, какие-то цифры. А где id? "mig" - тоже не понимаю. |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
src может быть и таким:
text t55ext text gd6!333 43 id 395 text text text gd!333 43 id 34355 text te>xt = 34 text= <44 id 45346 То есть там могут быть не только буквы но и цифры и спец символы и enter. Попробовал сделать вот так:
var line = "45346", reg = new RegExp("((id)\\s+(\\d+))[^\]+?id "+line, "mig");
k.value = k.value.replace(reg, "$1")
Но удаляются и лишние строки. |
dima85,
<textarea id="k" name="" rows="12" >
text t55ext
text gd6!333 43
id 395
text text
text gd!333 43
id 34355
text te>xt = 34
text= <44
id 45346
</textarea>
<script>
var line = "45346", reg = new RegExp("([\\s\\S]+?)(id\\s+\\d+)", "mig");
k.value = k.value.replace(reg, function(a,b,c) {
return new RegExp("^id+\\s+"+line+"$").test(c) ? "" : a
})
</script>
|
Цитата:
Цитата:
var str = 'ab25sz'; console.log(str.match(/[^\d]/g)); // все что не числа console.log(str.match(/[^\\d]/g)); // все совпадения |
Вопрос снят. Не заметил сразу определение через конструктор.
|
Цитата:
Просто не использовал new RegExp() поленился. Написал значение той переменной литерально. Пусть автор сам дальше реализовывает. :) |
Цитата:
|
| Часовой пояс GMT +3, время: 00:48. |