我有几个字符串:
some-text-123123#####abcdefg/
some-STRING-413123#####qwer123t/
some-STRING-413123#####456zxcv/
我想收到:
abcdefg
qwer123t
456zxcv
我尝试过正则表达式:
/[^#####]*[^\/]/
但是这并没有起作用...
我有几个字符串:
some-text-123123#####abcdefg/
some-STRING-413123#####qwer123t/
some-STRING-413123#####456zxcv/
我想收到:
abcdefg
qwer123t
456zxcv
我尝试过正则表达式:
/[^#####]*[^\/]/
但是这并没有起作用...
/#####(.*)\//
并选择第一组。
演示:
const regex = /#####(.*)\//;
console.log('some-text-123123#####abcdefg/'.match(regex)[1]);
console.log('some-STRING-413123#####qwer123t/'.match(regex)[1]);
console.log('some-STRING-413123#####456zxcv/'.match(regex)[1]);
#####
或 /
的情况下仅匹配它们之间的字符串;即 /(?<=#####).*(?=\/)/
。 - Lemondoge假设:
#
之后开始/
之前结束建议: /(?<=#{5})\w*(?=\/)/
因此,(?<=#{5})
是一个向后断言,它将检查任何匹配字符串是否紧接着具有提供的断言(在这种情况下,5个#
)。
(?=\/)
是一个向前断言,它将检查匹配字符串段之前的内容,以查看它是否与提供的断言匹配(在这种情况下,一个单独的/
)。
正则表达式实际返回的文本匹配是\w*
,由字符类和量词组成。字符类\w
匹配任何字母数字字符([A-Za-z0-9_]
)。*
量词匹配前面的项零次或多次。
成功匹配:
我强烈建议深入学习正则表达式,因为它是一个非常强大的工具。
MDN作为大部分Web开发内容的资源,是正则表达式的绝佳资源。从我的答案中可以学到的所有内容都可以在MDN的正则表达式语法速查表上学习到。
此外,交互式工具在组合复杂的正则表达式时非常有用。Regex 101通常是我使用的工具,但是可以从谷歌搜索中找到许多类似的在线Web工具。
[^
。[^#####]*[^\/]
可以写成[^#]*[^\/]
,可以匹配除了 #
以外的可选字符,并且再匹配一个单独的字符,除了 /
。
#####(\w+)\/$
如果前面应该有一个除 #
以外的字符
[^#]#####(\w+)\/$
(?<!#)#####(\w+)\/$
使用否定字符类匹配至少 5 个 #
字符,且中间没有 #
或 /
:
#####([^#\/]+)\/
(?<=(?<!#)#####)[^#\/]+(?=\/)
/#####([^\/]+)/
- anubhavastr.split("#####")[1].slice(0, -1)
怎么样? - code