关于jquery:Javascript中的正则表达式,表示只有数字和字符串的字符串。

Regular expression in Javascript for a string which have ONLY numbers & should not have any characters at any position except numbers

问题是:我在JSP文件中有一个文本区域,从这里我通过JavaScript读取值,并验证输入的值是否是"1-25之间的数字"。下面是我的解释。

1)我的字符串只能包含[1-25]之间的数字

2)除了数字[1-25]之外,它不应该在字符串中的任何位置有任何字符(SPL字符/符号)。

例如:

1
2
3
4
 12-allowed  (less than 25 and greater than 1) show success_message
 1@#4- not allowed, show warn_message
 @14#- not allowed, show warn_message
 !$%12()*& - not allowed even though number is less than 25 and greater than 1, since it contains characters apart from numbers, show warn_message.

这是我试过的

文件.jsp

1
        <input id="text_area" name="posArea" type="text"/>

我的文件.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    var pos= ($('#text_area').val());

    var reg="^[1-25]$";

        if(pos.match(reg)){

                $('#warn_message').show();
                return false;
         }

         if(isNaN(pos)){

            $('#warn_message').show();
            return false;

            }
       else{

            $('#success_message').show();
       }

这是我输入的任何号码的警告信息,有人能发现我的错误吗?谢谢你的帮助。如果你不理解我的问题,请发表评论


regex [1-25]精确匹配1、2、5、1次。

对于整数,可以使用这个regex:^(?:2[0-5]|[1][0-9]|[1-9])$

它不会分数,但我想你对它们不感兴趣。

见演示。


1
^(?:[1-9]|1\d|2[0-5])$

试试这个。看演示。

网址:https://regex101.com/r/sj9gm7/17

[1-25]不表示从125的范围,表示字符类中从1 to 25的范围。


您可以在不使用regex的情况下执行此操作:

1
2
3
4
5
6
7
8
function checkNumber(number) {
  if(isNaN(number)) {
    return false;
  } else {
    number = parseInt(number)
    return number > 1 && number < 25
  }
}