gpt4 book ai didi

javascript - 在 JavaScript 中使用正则表达式来检查模式重用(例如,在字符串中声明两次的相同字符序列)

转载 作者:行者123 更新时间:2023-12-02 20:27:02 25 4
gpt4 key购买 nike

请注意这些文本字符串如何声明两次“GARNSEY”一词:

"GARNSEY B R & D B GARNSEY"
"GARNSEY B R & D GARNSEY"

现在可以是 D GARNSEY(没有中间名首字母)或 D B GARNSEY(包括中间名首字母),但我需要知道是否提到了 GARNEY,因为这意味着姓氏被提及两次,一次在开头,一次在结尾。

根据《JavaScript 程序员引用》一书:

“您可以在整个模式中重复搜索该确切符号...您可以使用\1 来执行此操作。使用\1 指的是第一个分组表达式的结果。”

好吧,所以我尝试“保存”第一组\w{1,})\1 的结果,然后我尝试在最后重用它,并尝试检查是否有中间名:

 /^(\w{1,})\1\s\w{1,}((?:\s\w{1,})?)+\s+&\s+\w{1,}\s(((?:\s\w{1,})?)+)\1$/;

然而,JavaScript 解释器通过以下简单测试发出“失败”警报:

(function(){
var checkChar = function(txt){
var regex = /^(\w{1,})\1\s\w{1,}((?:\s\w{1,})?)+\s+&\s+\w{1,}\s(((?:\s\w{1,})?)+)\1$/;

(regex.test(txt)) ? alert('passed') : alert('failed');

}

checkChar("GARNSEY B R & D B GARNSEY");
})()

我是否误解了\1 的目的,是否有任何解决方案可以使用正则表达式执行我想要执行的操作,如上所示?感谢您的回复。

最佳答案

删除正则表达式开头的\1。之后它仍然不会报告通过,但这可能是您的正则表达式中的其他错误。我尝试简化您的代码以执行或多或少相同的操作:

(function(){
var checkChar = function(txt){
var regex = /^(\w+)(\s\w+)+\s+&\s+(\w+\s)+\1$/;

(regex.test(txt)) ? alert('passed') : alert('failed');

}

checkChar("GARNSEY B R & D B GARNSEY");
})()

关于javascript - 在 JavaScript 中使用正则表达式来检查模式重用(例如,在字符串中声明两次的相同字符序列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682632/

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