当前位置: 首页 > 知识库问答 >
问题:

用连字符分隔的浮点数范围的正则表达式(表示年份和月份)

奚翰海
2023-03-14

我需要验证一个文本框字段,该字段将包含一个范围(由-分隔)。以下是要求:

    我试图生成一些正则表达式,但最接近的是:

    (0|([1-9][0-9]{0,9}))(\.[0-9]{1,2})?(-)(0|([1-9][0-9]{0,9}))(\.[0-9]{1,2})? 
    

    共有2个答案

    姬国安
    2023-03-14

    另一个带有正则表达式的变体函数用于解决方案

    function israngev(r){
        var res = r.match(/^\d+$|^\d+\.(\d|1[01])$|^(\d+\.(\d|1[01])) ?- ?(\d+\.(\d|1[01]))$/);
        return res!=null && 
              (!(res[1]||res[2]||res[4]) || 
                (res[1]!=null            ||
                (res[4]-res[2]>0)))}
    
    穆子琪
    2023-03-14

    您可以使用正则表达式进行大部分验证,但检查第一个值是否小于第二个值必须在代码中而不是正则表达式中完成。

    function isRangeStringValid(r) {
        if (!r.match(/(0|[1-9]\d*)\.(\d|1[01]) ?- ?(0|[1-9]\d*)\.(\d|1[01])/)) {
            return false;
        }
        var y1 = parseInt(RegExp.$1);
        var m1 = parseInt(RegExp.$2);    
        var y2 = parseInt(RegExp.$3);    
        var m2 = parseInt(RegExp.$4);
        return (y1<y2 || (y1==y2 && m1<m2));
    }
    
     类似资料:
    • 问题内容: 我有一个任务要匹配浮点数。我为此编写了以下正则表达式: 但是,它返回一个错误: 据我所知,我们还需要使用转义字符.。请纠正我哪里我错了。 问题答案: TL; DR 使用[.]代替.和[0-9]代替\d以避免在某些语言(例如Java)中转义问题。 感谢无名的人最初认识到这一点。 匹配浮点数的一种相对简单的模式是 这将匹配: 查看工作示例 如果您还想匹配123.(无小数点的句点),则需要稍

    • 我有一组由连字符分隔的ID,其中至少可以有6个字符,包含字母数字值和一些特殊字符,在末尾,只有数字值是不允许的。如下所示: 我正在尝试下面给出的具有以下规则的以下模式,但面临一些测试查询的困难... https://regex101.com/r/d8MFRE/5

    • 我不熟悉excel vba中的正则表达式,一直在研究有关堆栈溢出的几个问题,在下面的链接“如何在单元格和循环中使用Microsoft excel中的正则表达式(Regex)”中找到了一个很好的问题 这里有一些非常有用的代码,我想我可能会尝试学习,并根据自己的目的进行调整,我正在尝试匹配一个4位数的字符串,代表电子表格上一个单元格中的一年,即“2016年是好的一年”将产生“2016年”。 我使用了发

    • 问题内容: 我正在使用正则表达式来验证字符串中的特定格式。该字符串将成为游戏规则。 示例:根据规则,“ DX 3”也可以,但是“ DX 14”也可以。。。我知道如何查看字符串并找到一个或多个“数字”,因此问题在于正则表达式将也匹配34,这个数字超出了规则的“范围” … 我是否缺少有关正则表达式的功能?还是根本不可能? 问题答案: 不幸的是,没有简单的方法可以在正则表达式中定义范围。如果要使用范围1

    • 请帮助我编写正则表达式来解析以下字符串 其中,是GUID,和是范围从1到65536的数字 示例: 注意:GUID应该没有大括号(只有36个符号长度)。 这就是我尝试过的 但它允许任何数字。你能帮忙吗?有较短的路去吗

    • 我想将一个长数组值转换为一个特定格式的字符串。 例如,将longArray={0,1,2,3}转换为字符串0.1.2.3 我可以执行arrays.ToString(longArray),它将返回[0,1,2,3]。 现在必须将字符串[0,1,2,3]转换为0.1.2.3