gpt4 book ai didi

javascript - 在javascript中使用正则表达式提取字符串

转载 作者:行者123 更新时间:2023-11-30 15:36:15 25 4
gpt4 key购买 nike

我有以下格式的字符串:

"hello(%npm%)hi"

我的目标是将字符串分成三部分

a) hello
b) (%npm%)
c) hi

我正在使用正则表达式,如下所示:

var myString = "hello(%npm%)hi".match(/[a-z]*/);
var backdtring = "hello(%npm%)hi".match(/\)[a-z]*/);
var midstring = "hello(%npm%)hi".match(/\(\%[a-z]*\%\)/);

var res = backdtring.replace(")", "");

https://jsfiddle.net/1988/ff6aupmL/

我在 jsfiddle 中尝试,其中一行有错误:

var res = backdtring.replace(")", "");

“backdtring.replace 不是函数”

上面的replace函数有什么问题吗?

更新:另外,我是否使用了正则表达式的最佳实践?

最佳答案

正如评论中提到的,您正在尝试对数组使用 String#replace 方法,请参阅 String#match 的返回值的描述:

An Array containing the entire match result and any parentheses-captured matched results; null if there were no matches.

为了简化标记化,我宁愿使用 .split(/(\([^()]*\))/) 来获取括号中的所有子字符串和剩余的子字符串:

var s = "hello(%npm%)hi";
var res = s.split(/(\([^()]*\))/);
console.log(res);

详细信息:

  • (\([^()]*\)) - 模式包含在捕获组中,因此 split 可以返回匹配的子字符串和不匹配的子字符串不符合模式
  • \( - 文字 (
  • [^()]* - 除了 ()
  • 之外的 0+ 个字符
  • \) - 文字 )

关于javascript - 在javascript中使用正则表达式提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41504929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com