如何使用正则表达式从泛型类型中删除字符串中的完整行

时间:2017-10-26 09:57:53

标签: javascript regex

我有这个代码,如果有一个参数且值为Window: String

,我试图删除整行
const str = `fnct1(param: Int, Window: String): String func2(Window: String): String function3(param: String): String`;
const regex = /[^\s(]+\(Window:\s*String\): [^(\s]+\s*/gm;
const result = str.replace(regex, '');
console.log(result);

这对我很有用并且返回fnct1(param: Int, Window: String): String function3(param: String): String我在正则表达式中有硬编码Window: String,现在我想让它变得通用,因为类型可以是任何东西,并且我为Window: String做了同样的事情

可能是

const str = `fnct1(param: Int, Window: String): String func2(Window: Int): String function3(param: String): String`;
const str = `fnct1(param: Int, Window: String): String func2(Window: String): String function3(param: String): String`;

有谁知道怎么做?

1 个答案:

答案 0 :(得分:2)

您希望在Window:和0+空格之后替换任何一个或多个单词。

您可以使用

/[^\s(]+\(Window:\s*\w+\):\s*[^(\s]+\s*/g

请参阅regex demo

var str = "fnct1(param: Int, Window: String): String func2(Window: String): String function3(param: String): String";
var regex = /[^\s(]+\(Window:\s*\w+\):\s*[^(\s]+\s*/g;
var result = str.replace(regex, '');
console.log(result);

模式详情

  • [^\s(]+ - 除了空格和(
  • 之外的1个或多个字符
  • \(Window: - (Window:子字符串
  • \s* - 0+ whitespaces
  • \w+ - 一个或多个字符(ASCII字母,数字或/和_
  • \): - ):子字符串
  • \s* - 0+ whitespaces
  • [^(\s]+ - 除了空格和(
  • 之外的1个或多个字符
  • \s* - 0+ whitespaces