Javascript正则表达式代码无法正常工作

时间:2017-12-23 12:45:59

标签: javascript regex ecmascript-6

我创建了一个函数来打破一个字符串以将其分解为多个部分。 我在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'))




2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:1)

您将要使用函数作为第二个参数来操作替换的结果。来自MDN String.prototype.replace()

  

因为我们想要进一步转换匹配的结果   最后的替换是,我们必须使用一个函数。这种力量   在toLowerCase()方法之前评估匹配。要是我们   曾试图使用没有功能的匹配来做到这一点   toLowerCase()没有效果。

     

这是因为&#39; $&amp;&#39; .toLowerCase()将首先评估为   使用之前的字符串文字(产生相同的&#39; $&amp;&#39;)   字符作为模式。