3

基本上我有以下几点:

  • 输入字符串(例如 ABCDEFGHI)
  • 输入模板(例如 XXX-XXX-XXX)

我想看到的输出是ABC-DEF-GHI

我想它会像"XXX-XXX-XXX".replace("regex", "ABCDEFGHI");

问题是模板是动态的。它可能是XXX-XXX-XXXorXX-XXXX-XXX或任何其他可以包含任何特殊字符的组合,但要匹配的字符始终是X

模板的长度或组数不受特殊字符分隔的限制。ieXX-X-XXXX-XXX-XXX-XXX-X都是有效的模板,只要 X 的数量与输入字符的数量相同。

到目前为止,我有这个:"/^([^a-zA-Z0-9]*X){9}[a-zA-Z0-9]*$/"它将验证我的模板。

任何人都可以对此有所了解吗?有没有办法用字符串中的一个字符替换模板中的一个匹配字符?

4

1 回答 1

1

基本上你需要将你的简单模板转换成 REGEX,你可以用 REGEX 做到这一点:

I.创建替换

  • 搜索正则表达式^X+(\W)X+(\W)X+$替换为\\1\1\\2\2\\3
  • 这将在这里转换XXX-XXX-XXX\1-\2-\3 解释演示

二、创建匹配:(两步)

  1. 创建三个组:
    • 搜索正则表达式^(X+)\W(X+)\W(X+)$替换为(\1)(\2)(\3)
    • 这将在这里转换XXX-XXX-XXX(XXX)(XXX)(XXX) 解释演示
  2. X's 替换为点(.作为单个字符匹配),通过上述操作
    • 这将在这里转换(XXX)(XXX)(XXX)(...)(...)(...) 解释演示

现在您可以将新的匹配字符串(...)(...)(...)和新的替换字符串\1-\2-\3与输入字符串一起使用,ABCDEFGHI并在此处获得ABC-DEF-GHI 解释演示

注意:我假设您的模板会将输入字符串分成 3 个部分,中间有 2 个(可变)特殊字符

更新:

如果模板有可变部分,您必须提前创建匹配替换模式:
使用正则表达式:计算\W模板中的部分,然后创建匹配和替换模式。

于 2013-03-05T00:50:43.333 回答