我想知道在正则表达式中匹配的字符之前插入字符的正则表达式。例如:在匹配之前插入内容的正则表达式
var string = "HelloYouHowAreYou"
var regEx = /[A-Z\s]/g //to identify capital letters, but want to insert a dash before them
string = string.replace(regEx,"-")
console.log(string)
我该如何解决这个问题?
我想知道在正则表达式中匹配的字符之前插入字符的正则表达式。例如:在匹配之前插入内容的正则表达式
var string = "HelloYouHowAreYou"
var regEx = /[A-Z\s]/g //to identify capital letters, but want to insert a dash before them
string = string.replace(regEx,"-")
console.log(string)
我该如何解决这个问题?
你只需要使用反向引用$&
在替换模式是指整场比赛:
var string = "HelloYouHowAreYou"
var regEx = /[A-Z\s]/g;
string = string.replace(regEx,"-$&")
console.log(string)
如果你想避免在字符串的开头相匹配的大写ASCII字母,在开始添加(?!^)
:
var string = "HelloYouHowAreYou"
var regEx = /(?!^)[A-Z\s]/g;
string = string.replace(regEx,"-$&")
console.log(string)
注意\s
相匹配的空白。如果你想只匹配大写ASCII字母,使用
/[A-Z]/g
Downvotes不透露原因不会丰富任何人的知识。如果有人知道造成这种情况的原因,请告诉我如何改善这个答案。 –
我确实认为对于当前的任务来说,2个周期太多了。原来的问题听起来像*正则表达式,用于在匹配之前插入内容*只需要一个'.replace(regEx,“ - $&”)'答案。 –
Wiktor的Stribiżew有一个伟大的答案了,但你也可以通过一个函数来替换方法,如果你想要做的字符串的额外的操作。
var string = "HelloYouHowAreYou"
var regEx = /[A-Z\s]/g //to identify capital letters, but want to insert a dash before them
function replacer(match) {
return ('-') + (match);
}
string = string.replace(regEx,replacer)
console.log(string)
为什么您在字符类'\ s'如果你想只匹配大写字母? – revo
请添加想得到的结果。 –
我想把它用于空格和大写字母,但我的问题只是指的是大写部分。 – Zzgooloo