JQuery Regex хочет удалить запятые из строки

jquery regex

534 просмотра

5 ответа

У меня есть строка как

Andrew,Lucy,,David,Tess,

Я хочу удалить ,,после Люси, а также запятую в конце строки, так что конечные результаты мне нужно будет

Andrew,Lucy,David,Tess

Есть ли способ добиться этого в JQuery?

Автор: Sandeep Pujare Источник Размещён: 08.11.2019 10:58

Ответы (5)


2 плюса

Используйте позитивный взгляд ?=

var str = "Andrew,Lucy,,David,Tess,";
str = str.replace(/,(?=,+|$)/g, "");
console.log( str ); // Andrew,Lucy,David,Tess

остановитесь на запятой, а ,не на заглядывании,?= за ней следуют:
,+одна или несколько запятых
|или в конце строки$

Важный

Скорее всего, вам нужно позаботиться о случаях, когда строка начинается с одной или нескольких запятых , чем просто добавить ^,+|к своему регулярному выражению:

var str = ",,Andrew,Lucy,,David,Tess,,";
str = str.replace(/^,+|,(?=,+|$)/g, "");
console.log( str ); // Andrew,Lucy,David,Tess

или соответственно /^,+|,(?=,+)|,+$/g

Автор: Roko C. Buljan Размещён: 20.08.2016 07:05

2 плюса

Это рабочее регулярное выражение:

/,+(?=,|$)/g

Онлайн демо

Удалите лишние запятые, за которыми следует запятая или конец строки. Если вы примените это к нескольким строкам, добавьте m(многострочный флаг) и после закрывающей косой черты (в противном случае $соответствует только в самом конце текста, а не на каждой новой строке).

Код Демо

// Add /i at bottom to make the regex it case insensitive
var re = /,+(?=,|$)/g; 

var tests = ['Andrew,Lucy,,David,Tess,','Andrew,,,,Lucy,,,David,Tess,,,'].reverse();
var m;

while( t = tests.pop() ) {
    document.write('"' + t + '" => <font color="green">' + t.replace(re,'') + '</font><br/>');
}

Автор: Giuseppe Ricupero Размещён: 20.08.2016 07:03

0 плюса

Спасибо всем. Действительно ценю ваши усилия.

Сделал что-то подобное. Это сработало

var your_string = 'Andrew, Lucy,, David, Tess,';
newstr=your_string.replace(',,', ',');

your_string1 = newstr.replace(/[,]$/,'');

сначала я удалил двойные запятые, а затем я удалил запятую с конца

Автор: Sandeep Pujare Размещён: 20.08.2016 06:57

-1 плюса

Или Вы можете просто использовать .replace()

var str = "Andrew,Lucy,,David,Tess,";
var res = str.replace(",,", ",").replace(/,\s*$/, ""); 

Рабочая Демо

Автор: Yo Yo Размещён: 20.08.2016 06:48

-1 плюса

Без регулярного выражения:

var str = "Andrew,Lucy,,David,Tess,";
var res = str.split(",");
res = res.filter(Boolean);
res = res.join(",");
console.log(res);

С помощью регулярного выражения и замените функцию ():

var str = "Andrew,Lucy,,David,Tess,";
var res = str.replace(/,,|,$/g, function(x){
  return x == ",," ? ",": "";});
console.log(res);

Автор: Gerald Chablowski Размещён: 20.08.2016 07:06
Вопросы из категории :
32x32