我创建了一个函数来打破一个字符串以将其分解为多个部分。
我在MDN上读到,通过将正则表达式放在括号中,我可以稍后使用$1
来引用它,但由于某种原因,我的代码无效。
我希望此函数返回'url this'
,但它返回'$ 1his'
。
请帮助!
const someFunction = str => {
return str.replace(/([A-Z]+)/g,('$1'.slice(0,-1).toLowerCase() + ' ' + '$1'.slice(-1).toLowerCase()));
}
console.log(someFunction('URLThis'))

答案 0 :(得分:2)
您可以将第二个参数中的函数传递给string#replace
。
import { Component } from '@angular/core';
@Component({
template: `
<h1 mat-dialog-title>Add Item</h1>
<mat-dialog-content>
<mat-form-field class="example-full-width">
<input matInput placeholder="Item name here...">
</mat-form-field>
</mat-dialog-content>
<mat-dialog-actions>
<button mat-button (click)="saveMessage()">Add</button>
<button mat-button (click)="closeDialog()">Cancel</button>
</mat-dialog-actions>
`
})
export class DialogComponent {
saveMessage() {
console.log('how to send data to the app component');
}
closeDialog() {
console.log('how to close');
}
}
&#13;
答案 1 :(得分:1)
您将要使用函数作为第二个参数来操作替换的结果。来自MDN String.prototype.replace():
因为我们想要进一步转换匹配的结果 最后的替换是,我们必须使用一个函数。这种力量 在toLowerCase()方法之前评估匹配。要是我们 曾试图使用没有功能的匹配来做到这一点 toLowerCase()没有效果。
这是因为&#39; $&amp;&#39; .toLowerCase()将首先评估为 使用之前的字符串文字(产生相同的&#39; $&amp;&#39;) 字符作为模式。