gpt4 book ai didi

javascript - 正则表达式后视 : Invalid regular expression:/(? <=\.)\S+$/: 无效组

转载 作者:行者123 更新时间:2023-11-29 18:08:47 25 4
gpt4 key购买 nike

我有以下正则表达式

(?<=\.)\S+$

用于提取字符串的扩展名(最后一个点之后的任何内容)。 regex101.com似乎接受了我的正则表达式:字符串扩展名正确匹配。一旦我将它移入 javascript 脚本并尝试针对字符串对其进行测试,我就会收到此错误:

Invalid regular expression: /(?<=\.)\S+$/: Invalid group

我在使用 regex101 自动生成代码时也遇到了同样的错误:

var re = /(?<=\.)\S+$/; 
var str = 'test.txt';
var m;

if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}

参见 fiddle HERE

有什么提示吗?

最佳答案

您不能在 JavaScript 正则表达式中使用后视。有一些JavaScript look-behind workarounds ,但他们都有自己的障碍。为了安全起见,请使用捕获组。在这里,您需要的内容将在第二组中:

  (\.)([^.]+)$

或者,只有 1 个捕获组(以提高性能):

  \.([^.]+)$

代码:

var re = /\.([^.]+)$/; 
var str = 'test.txt';
var m;

if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
alert(m[1]);
}

关于javascript - 正则表达式后视 : Invalid regular expression:/(? <=\.)\S+$/: 无效组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29370007/

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