【发布时间】:2012-09-25 11:38:54
【问题描述】:
所以我有一个字符串:
"this is the beginning, this is what i want to remove/ and this is the end"
如何使用 Javascript 来定位逗号和正斜杠之间的字符串? (我也想去掉逗号和斜线)
【问题讨论】:
标签: javascript regex substring
所以我有一个字符串:
"this is the beginning, this is what i want to remove/ and this is the end"
如何使用 Javascript 来定位逗号和正斜杠之间的字符串? (我也想去掉逗号和斜线)
【问题讨论】:
标签: javascript regex substring
string = string.replace( /,.*?\//, '' );
在regexp 中,, 匹配自身,.*? 匹配任何字符序列(由于? 修饰符,首选最短匹配),\/ 匹配斜杠。 (斜杠需要用反斜杠转义,因为它也用作正则表达式分隔符。不幸的是,JavaScript 不支持替代正则表达式文字分隔符,因此您只需要处理 leaning toothpick syndrome。)
请注意,上面的代码删除了字符串中从 first 逗号到斜杠后面的 first 的所有内容。如果可能有多个逗号或斜杠,根据您想要发生的情况,有多种方法可以修改正则表达式的行为。例如:
.replace( /,.*\//, '' ) 删除从 first 逗号到 last 斜杠的所有内容;.replace( /^(.*),.*?\//, '$1' ) 删除 last 逗号后跟斜线到下一个斜线的所有内容;.replace( /^(.*),.*\//, '$1' ) 删除字符串中 last 逗号后跟斜线直到 last 斜线的所有内容;.replace( /,[^\/]*\//, '' ) 与原始正则表达式相同,即删除从第一个逗号到后面第一个斜杠的所有内容(即使中间有其他逗号);.replace( /,[^,\/]*\//, '' ) 删除第一个以逗号开头并以斜杠结尾的子字符串,中间不包含任何逗号或斜杠;.replace( /^(.*),[^,\/]*\//, '$1' ) 删除 last 子字符串,该子字符串以逗号开头并以斜杠结尾,中间没有逗号或斜杠;和.replace( /^,[^,\/]*\//g, '' ) 删除 所有 以逗号开头并以斜杠结尾且中间没有逗号或斜杠的子字符串。还请注意,由于正则表达式语法的历史怪癖,. 元字符实际上将匹配任何字符除了换行符 ("\n")。大多数正则表达式实现都提供了一些方法来关闭这个怪癖并使. 真正匹配所有字符,但由于某种原因,JavaScript 不匹配。如果您的字符串可能包含换行符,您应该用一些workaround 替换上面的正则表达式中所有出现的.,例如[\s\S](适用于大多数PCRE 风格的正则表达式引擎)或[^](更短,但特定于JavaScript 的正则表达式风格)。
【讨论】:
? 修饰符?
由于您的问题被标记为正则表达式,您似乎想要.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);
【讨论】:
return str.split(',')[1].split('/')[0];
【讨论】:
var commaIndex=str.indexOf(',')
var slashIndex=str.indexOf('/')
var finalString=str.substring(commaIndex,slashIndex)
希望能成功
【讨论】: