如何只替换带括号的表达式javascript

时间:2015-06-30 10:32:35

标签: javascript regex

考虑

myString.replace(/(,\s)[\sa-zA-Z_0-9]+$/," and ")

我想添加一些语法,我试过

"Updated first_name, email and " 

但是我得到了

', '

Unfortunatley正则表达式也替换了'last_name',因为它用于查找有问题的', ' 我认为括号会使它只替换Mail::send('emails.servererror', ['exception' => $e, 'request' => $request] ,function($message) { ... }); 我如何实现目标?

5 个答案:

答案 0 :(得分:0)

String.replace用新的子字符串替换匹配的子字符串/ regexp。

在你的代码中,匹配包括从最后','到结尾的任意,所以这就是被替换的内容。

您可以将正则表达式更改为:(,(?!(.)*,)),它应该可以正常工作。

alert('Updated first_name, email, last_name'.replace(/(,(?!(.)*,))/, ' and'))

答案 1 :(得分:0)

JSFiddle

myString.replace(/,(?=[^,]*$)/, ' and')

这将找到任何逗号后面没有逗号的逗号。

答案 2 :(得分:0)

试试这个

var myString = "Updated first_name, email, last_name" ;
myString=myString.replace(/,(?=[^,]*$)/, 'and')
alert(myString);

答案 3 :(得分:0)

已经有很多答案,但这也是我的两分钱:

var myString = "Updated first_name, email, last_name";

var t= myString.replace(/,\s([\sa-zA-Z_0-9]+)$/," and $1");
alert(t);

你可以play with the fidlle here

答案 4 :(得分:0)

将您的replace参数更改为

myString.replace(/, *([\w]+)$/, " and $1")