8

所以我有一个字符串:

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

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

4

4 回答 4

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

regexp中,,匹配自身,.*?匹配任何字符序列(由于?修饰符,首选最短匹配)并\/匹配斜杠。(斜杠需要用反斜杠转义,因为它也用作正则表达式分隔符。不幸的是,JavaScript 不支持替代正则表达式文字分隔符,因此您只需要应对倾斜牙签综合症。)

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

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

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

于 2012-09-25T11:41:18.790 回答
3

由于您的问题用正则表达式标记,您似乎想要.replace

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

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

/,(.+?)\//

或使用 a*而不是+if 字符串也可以为空

使用字符串函数,它将是

var cpos = str.indexOf(","),
    spos = str.indexOf("/");
if (cpos > -1 && spos > cpos)
    return str.substr(0, cpos)+str.substr(spos+1);
于 2012-09-25T11:41:57.673 回答
1
return str.split(',')[1].split('/')[0];
于 2012-09-25T11:44:58.627 回答
-1
var commaIndex=str.indexOf(',')
var slashIndex=str.indexOf('/')
var finalString=str.substring(commaIndex,slashIndex)

希望它会起作用

于 2012-09-25T11:40:57.770 回答