正则表达式是为了匹配字符而设计的,而并不是为了匹配数字,所以当你使用正则匹配指定范围内的数字的时候你需要额外小心。表达式
[0-255]
并不能匹配0至255之间的数字。表达式
[0-255]
是一个
字符集
,它的含义是匹配 0,1,2,5中任意一个字符,这个表达式等同于
[0125]
。
正则引擎真正处理的是字符,所以数字0对于引擎来说是一个字符,而255对于引擎来说是长度为3的字符。所以如何要匹配0至255中的所有数字,我们需要让引擎匹配长度为一到三之间的字符。
表达式
[0-9]
可以匹配0
9之间的数字。`[1-9][0-9]`可以匹配10
99之间的数字。这两个是最简单的。
匹配三位整数略微复杂一点,因为我们要排除256至999之间的整数。
1[0-9][0-9]
可以匹配100至199。
2[0-4][0-9]
匹配200至249。最后
25[0-5]
匹配250至255。
你可以发现当我们匹配0到255之间的整数时,我们需要按照字符的长度来分割这个范围。在匹配三位整数的时候,如果百位是 1 ,那么十位和个位允许出现 0 至 9 之间的10个字符,如果百位是 2 ,那么十位和个位的字符将进一步做限制。
把前面三个部分用
选择符
连接起来,我们就得到了0只255之间所有的整数:
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
。这个方法还存在一个缺陷:正则表达式通常允许部分匹配,所以这个表达式可以匹配到 12345 中的 123。有两个方法可以解决这个问题。
如果你在一个文档中所搜数字,你可以使用
词语边界
锁定数字的范围:
\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b
。因为选择符的优先级是最低的,所以我们要在选择外加上括号。这样引擎会先匹配第一个边界符
\b
,然后匹配整个选择符,最后匹配最后一个
\b
。
如果你想验证用户输入内容,那么或许你想验证的是用户输入的完整内容,而不是其中的部分。你可以使用
位置字符
:
^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$
。
以下一些常用的数字匹配。
-
000…255:
^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
-
0 or 000…255:
^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$
-
0 or 000…127:
^(0?[0-9]?[0-9]|1[01][0-9]|12[0-7])$
-
0…999:
^([0-9]|[1-9][0-9]|[1-9][0-9][0-9])$
-
000…999:
^[0-9]{3}$
-
0 or 000…999:
^[0-9]{1,3}$
-
1…999:
^([1-9]|[1-9][0-9]|[1-9][0-9][0-9])$
-
001…999:
^(00[1-9]|0[1-9][0-9]|[1-9][0-9][0-9])$
-
1 or 001…999:
^(0{0,2}[1-9]|0?[1-9][0-9]|[1-9][0-9][0-9])$
-
0 or 00…59:
^[0-5]?[0-9]$
-
0 or 000…366:
^(0?[0-9]?[0-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6])$
1. 正则匹配数字范围正则表达式是为了匹配字符而设计的,而并不是为了匹配数字,所以当你使用正则匹配指定范围内的数字的时候你需要额外小心。表达式[0-255]并不能匹配0至255之间的数字。表达式[0-255]是一个字符集,它的含义是匹配 0,1,2,5中任意一个字符,这个表达式等同于[0125]。正则引擎真正处理的是字符,所以数字0对于引擎来说是一个字符,而255对于引擎来说是长度为3的字符。...
^201607(1[6-9]|2[0-9]|3[0-1]).+
逻辑很简单,如果是必须是1或2或3开头,如果是1开头则后面
范围
为6-9,如果是2开头则为0-9,如果为3开头则为0-1,因为7月份到31号
同理,如果要
匹配
前半月的数据则是:
^B201607(0[0-9]|1[1-5]).+
php
正则
表达式限制
数字
个数
如何写个
正则
表达式,只有4个
数字
才能
匹配
比如1234可以
匹配
,12345或者12
数字
个数不是4个的不能
匹配
?
\d{4}我试过不可以,
public boolean isNumber(String str)
java.util.regex.Pattern pattern=java.util.regex.Pattern.compile("[0-9]+(.[0-9]+)?");
java.util.regex.Matcher match=pattern.matcher(str);
if(match.matches()==false)
return false;
return true;
------------------------------------------------------------------------------------------------------
[removed]
function validate(){
var reg = new RegExp("^[0-9]*$");
var obj = document.getElementById("name");
if(!reg.test(obj.value)){
alert("请输入
数字
!");
if(!/^[0-9]*$/.test(obj.value)){
alert("请输入
数字
!");
[removed]
------------------------------------------------------------------------------------------------------
验证
数字
的
正则
表达式集
验证
数字
:^[0-9]*$
验证n位的
数字
:^\d{n}$
验证至少n位
数字
:^\d{n,}$
验证m-n位的
数字
:^\d{m,n}$
验证零和非零开头的
数字
:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正
整数
:^\+?[1-9][0-9]*$
验证非零的负
整数
:^\-[1-9][0-9]*$
验证非负
整数
(正
整数
+ 0) ^\d+$
验证非正
整数
(负
整数
+ 0) ^((-\d+)|(0+))$
验证长度为3的字符:^.{3}$
验证由26个英文字母组成的字符串:^[A-Za-z]+$
验证由26个大写英文字母组成的字符串:^[A-Z]+$
验证由26个小写英文字母组成的字符串:^[a-z]+$
验证由
数字
和26个英文字母组成的字符串:^[A-Za-z0-9]+$
验证由
数字
、26个英文字母或者下划线组成的字符串:^\w+$
验证用户密码:^[a-zA-Z]\w{5,17}$ 正确格式为:以字母开头,长度在6-
18
之间,只能包含字符、
数字
和下划线。
验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+
验证汉字:^[\u4e00-\u9fa5],{0,}$
验证Email地址:^\w+[-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
验证InternetURL:^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
验证电话号码:^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
验证身份证号(15位或
18
位
数字
):^\d{15}|\d{}
18
$
验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。
整数
:^-?\d+$
非负浮点数(正浮点数 + 0):^\d+(\.\d+)?$
正浮点数 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
负浮点数 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?\d+)(\.\d+)?$
又是按往常一样刷leetcode,需要了65. 有效
数字
了,一想字符串
匹配
,就想到了永远的神——
正则匹配
,但是在
匹配
过程中需要了很多问题,将代码和问题记录以下。
基础知识:Python
正则
表达式
class Solution:
def isNumber(self, s: str) -> bool:
integer = re.search(r'^[+-]?[\d]+', s)
if integer and integer.gr