我有以下代码:
var string = "word1;word2;word3,word4,word5,word6.word7";
function ends_with(string, character) {
var regexp = new RegExp('\\w+' + character, 'g');
var matches = string.match(regexp);
var replacer = new RegExp(character + '$');
return matches.map(function(ee) {
return ee.replace(replacer, '');
});
}
// ends_with(string, ';') => ["word1", "word2"]
该功能不考虑空格。例如,如果您输入
ends_with('Jonas Sand,', ',')
输出将是Sand。需要帮助才能使函数与具有空格的单词一起使用。
答案 0 :(得分:4)
您可以在split
中使用您的分隔符,并使用slice
取消除最后一部分之外的所有分隔符:
function ends_with(string, character) {
return string.split(character).slice(0, -1);
}
答案 1 :(得分:2)
\w
匹配单词字符,改为使用[^x]
,其中x
是您的角色。除了你的角色之外,这个匹配。
因此,函数的第一行变为
var regexp = new RegExp('[^' + character + "]+" + character, 'g');
另一方面,如果要匹配由空格分隔的单词,请使用
var regexp = new RegExp('(\\w|\\s)+" + character, 'g');
PS:但是javascript中没有String#split
函数?
答案 2 :(得分:1)
尝试使用'[\\w\\s]+'
代替'\\w+'
来包含空格。
答案 3 :(得分:0)
尝试以下方法:
var string = "word1;w ord2;word3,word4,word5,word6.word7";
function ends_with(string, character) {
var regexp = new RegExp('.+' + character, 'g');
var matches = string.match(regexp);
var replacer = new RegExp(character + '$');
return matches.map(function(ee) {
return ee.replace(replacer, '');
});
}