在javascript字符串中的每个特殊字符之前添加一个字符

时间:2019-05-31 09:50:16

标签: javascript regex angular

我想通过正则表达式在字符串下的每个特殊字符添加一个字符,但是它是在特殊字符之后添加的。

我希望输出为字符串中的每个特殊字符添加一个字符。

<DataGridTextColumn ... CellStyle="{StaticResource cellStyle}">

输出应为aaa /!dd /,

2 个答案:

答案 0 :(得分:2)

您可以在替换字符串中使用$1来将捕获组的内容包括在替换中:

var string1="aaa!dd,"
var expressionResult = string1.replace(/([\/,!?_])/g, '/$1');
console.log(expressionResult);

更多on MDN

不过,您不需要捕获组,可以使用$&来引用与主表达式匹配的文本:

var string1="aaa!dd,"
var expressionResult = string1.replace(/[\/,!?_]/g, '/$&');
console.log(expressionResult);

(如果需要在替换中做一些更复杂的操作,则可以传入一个函数作为第二个参数。它以整体匹配作为第一个参数被调用,随后是每个捕获组的参数;其返回值在结果字符串中使用。这里不需要,但是...)

答案 1 :(得分:1)

您可以使用对组$& MDN ref的反向引用

var string1="aaa!dd,"
var expressionResult = string1.replace(/[\/,!?_]/g, '/$&');

console.log(expressionResult)

通过特殊字符来表示除字母和数字以外的所有内容,可以将正则表达式更改为

[^a-z\d]  - Match anything except alphabet and digit

var string1="aaa!dd,"
var expressionResult = string1.replace(/[^a-z\d]/g, '/$&');

console.log(expressionResult)