gpt4 book ai didi

javascript - 正则表达式匹配带有特殊字符前缀的日期

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

我有以下代码:

var splitter = (filterValue.length > 0 ? filterValue.match(/^\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})\s*\-?\s*(\d\d\/\d\d\/\d{4})?\s*$/).slice(1) : '');

哪里filterValue可能是:

01/01/2013

> 01/01/2013

< 01/01/2013

01/01/2013 - 01/01/2013

然后我将它们分成如下 block :

    var string1 = (splitter.length > 0 ? splitter[0] : '');
var string2 = (splitter.length >= 2 ? splitter[1] : '');
var string3 = (splitter.length >= 3 ? splitter[2] : '');
var string4 = (splitter.length < 4 ? splitter[3] : '');

string1将是 '', '>', '<', ''对于上面的例子。

string2永远是第一次约会

string3将是 '''-'如果两个日期之间存在破折号

string4将是最后一个日期。

但是我无法让最后一个场景发挥作用。所以假设我的正则表达式在处理这个问题时有问题。谁能看出问题所在吗?

fiddle :http://jsfiddle.net/7LR49/1/

我得到:

undefined
01/01/2013
01/01/2013
undefined

当我应该得到:

undefined
01/01/2013
-
01/01/2013

并在分离器上做一个控制台显示:

[undefined, "01/01/2013", "01/01/2013"]

所以最后第三个键实际上并没有被正则表达式拾取。而不是把第四个放在它的位置上。

最佳答案

一些修复:

  • 您的正则表达式未将破折号捕获为第三组。所以我改变了它。

来自:/^\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})\s*\-?\s*(\d\d\/\d\d\/\d{4})?\s*$/
至...:/^\s*(<|>)?\s*(\d\d\/\d\d\/\d{4})\s*(\-)?\s*(\d\d\/\d\d\/\d{4})?\s*$/
更改:.................................^..^

  • 您的病情并未评估为 true所以你会忽略最后一组的值:

来自:var string4 = (splitter.length < 4 ? splitter[3] : '');
至...:var string4 = (splitter.length < 5 ? splitter[3] : '');
更改:..............................^

现在输出:

undefined
01/01/2013
-
01/01/2013

你的 fiddle ,已更新:http://jsfiddle.net/7LR49/2/

关于javascript - 正则表达式匹配带有特殊字符前缀的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19911080/

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