猿问

使用正则表达式检查模式时出现问题

我在手动检查我的输入是否与我的模式匹配时遇到问题


这是我用来检查它的功能


if (!$element.attr("pattern")) return true;


    let pattern = $element.attr("pattern");

    let exp;

    if (pattern.charAt(0) === "^") exp = new RegExp(pattern);

    else exp = new RegExp('^' + pattern + '$');


    if (exp.test($element.val())) return true;

    else {

        return false;

    }

我已经检查过没有我用来设置 var“exp”的 ifelse,但结果是一样的。


这是我要检查的输入


<input class="k-textbox cyclique-input-popin" type="text" pattern="^[0-9]+([,][0-9])?$"/>

它的值为 0.25,我希望它能够具有这样的值:


1,25

1,2

0,2

20

...

可以有一个“,”或没有,但不能有像 1,20 这样的尾随零


白猪掌柜的
浏览 97回答 1
1回答

MYYA

(1) 您当前的模式允许尾随零,并且 (2) 该模式只允许逗号右侧的一位数字。你想要这样的东西:<input ... pattern="^[0-9]+(,[0-9]*[^0])?$">最后,你的代码可以简化一些:let pattern = $element.attr('pattern');if (!pattern) {&nbsp; return true;}let exp;if (pattern[0] === '^') {&nbsp; exp = new RegExp(pattern);} else {&nbsp; exp = new RegExp('^' + pattern + '$');}return exp.test($element.val()));让我知道这是否能让您得到想要的结果。祝你好运。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答