如何删除两个特定字符之间的子字符串

时间:2012-09-25 11:38:54

标签: javascript regex substring

所以我有一个字符串:

"this is the beginning, this is what i want to remove/ and this is the end"

如何使用Javascript来定位逗号和正斜杠之间的字符串? (我也想删除逗号和斜杠)

4 个答案:

答案 0 :(得分:9)

string = string.replace( /,.*?\//, '' );

regexp,匹配本身,.*?匹配任何字符序列(由于?修饰符而更喜欢最短匹配)和{{1}匹配斜杠。 (斜杠需要使用反斜杠进行转义,因为它也用作正则表达式分隔符。不幸的是,JavaScript不支持备用regexp文字分隔符,因此您只需要处理leaning toothpick syndrome。)

请注意,上面的代码会删除字符串中斜杠后面的 first 逗号到 first 中的所有内容。如果可能有多个逗号或斜杠,则根据您希望发生的情况,有多种方法可以修改正则表达式的行为。例如:

  • \/删除从第一个逗号到 last 斜杠的所有内容;
  • .replace( /,.*\//, '' )删除 last 逗号中的所有内容,然后删除斜杠到下一个斜杠;
  • .replace( /^(.*),.*?\//, '$1' )删除 last 逗号中的所有内容,然后斜线到字符串中的 last 斜杠;
  • .replace( /^(.*),.*\//, '$1' )与原始正则表达式相同,即删除从第一个逗号到第一个斜杠后的所有内容(即使中间还有其他逗号);
  • .replace( /,[^\/]*\//, '' )删除以逗号开头并以斜杠结尾的第一个子字符串,之间不包含任何逗号或斜杠;
  • .replace( /,[^,\/]*\//, '' )删除以逗号开头并以斜杠结尾的 last 子字符串,中间没有逗号或斜杠;和
  • .replace( /^(.*),[^,\/]*\//, '$1' )删除所有以逗号开头并以斜杠结尾的子字符串,并且中间没有逗号或斜杠。

另请注意,由于regexp语法的历史怪癖,.replace( /^,[^,\/]*\//g, '' )元字符实际上将匹配任何字符,除了换行符(.)。大多数regexp实现提供了一些关闭这个怪癖的方法,并使"\n"真正匹配所有字符,但JavaScript由于某种原因没有。如果您的字符串可能包含换行符,则应将上面的regexp中的所有.替换为.,例如[\s\S](适用于大多数PCRE样式的regexp引擎)或{{1 (更短,但特定于JavaScript的正则表达式风格)。

答案 1 :(得分:2)

由于您的问题标有正则表达式,因此您似乎需要.replace

return str.replace(/, this is what i want to remove\//, "");

如果您不知道其间的字符串,请使用

/,(.+?)\//

或使用*代替+如果字符串也可能为空

使用字符串函数,它将是

var cpos = str.indexOf(","),
    spos = str.indexOf("/");
if (cpos > -1 && spos > cpos)
    return str.substr(0, cpos)+str.substr(spos+1);

答案 2 :(得分:0)

return str.split(',')[1].split('/')[0];

答案 3 :(得分:-1)

var commaIndex=str.indexOf(',')
var slashIndex=str.indexOf('/')
var finalString=str.substring(commaIndex,slashIndex)

希望它能运作