JavaScript中的RegExp怪异

时间:2011-10-10 13:06:19

标签: javascript regex

我的JavaScript代码中有一个变量字符串,其中包含逗号分隔的单词和/或短语列表,例如:

字符串1:“abc,def hij,klm”

字符串2:“abc,def”

我想在字符串中的最后一个逗号之后插入单词'and'来获取

字符串1:“abc,def hij和klm”

字符串2:“abc和def”

我把以下代码放在一起:

// replace the last comma in the list with  ", and"  
var regEx1 = new RegExp(",(?=[A-z ]*$)" )      
var commaDelimList = commaDelimList.replace(regEx1, ", and ");

问题是,如果逗号分隔的字符串只有两个项目用逗号分隔,则它不起作用。

所以上面例子的结果是

字符串1:“abc,def hij和klm”

字符串2:“abc,def”

为什么RegExp不起作用,我可以使用什么来获得我想要的结果?

3 个答案:

答案 0 :(得分:1)

不确定正则表达式是否是正确的方式...

为什么不使用LastIndexOf并将其替换为字符串?

答案 1 :(得分:1)

由于这是一个相对简单的任务,一点点字符串操作可能是有益的 - 你也会实现更好的性能。

var str = 'abc, def, hij, klm',
    index = str.lastIndexOf(','),
    JOINER = ', and';

//'abc, def, hij, and klm'
str.slice(0, index) + JOINER + str.slice(index+1);

答案 2 :(得分:0)

没有尝试过你,但这有效

'abc, def'.replace( /,(?=[A-z ]*$)/, ", and" )