对正则/^[0-9]*$/不理解,求大神赐教

为什么/[0-9]*$/可以匹配FFF,/^[0-9]*/也可以匹配FFF,/^[0-9]*$/就不能匹配FFF呢?
/[0-9]*$/和/^[0-9]*/中的*,应该是取了0,所以匹配了FFF,为什么/^[0-9]*$/中的*不能取0呢?即没有数字开头也没有数字结尾。应该也是匹配FFF的啊!

0

6个回答

[0-9]*$匹配的FFF是在FFF的结尾位置,^[0-9]*匹配FFF是匹配的开头位置,
所以正则的匹配重要的不在于它能否匹配,而在于它匹配定位在哪里,当无法定位的时候就意味着无法匹配
而^[0-9]*$的含义是:要么字符串中全是数字,要么是个完全空的字符串。因为从开头到结尾已经被你框死了,所以任何不符合上面条件的字符串都无法匹配定位。

2
tang_cheng
tang_cheng 回复china_sie:这里太短,我在下面给你详细的说明
2 年多之前 回复
china_sie
china_sie 如果是[0-9]*,为什么他能匹配FFF呢?它不要求全部为数字吗?
2 年多之前 回复

/^[0-9]*$/你这个限制了必须是字符串或者空字符

其他2个是数字开头或者结尾,由于是*,没有数字也会匹配

1
showbo
支付宝加好友偷能量挖 说错了,更正这个:/^[0-9]*$/你这个限制了必须是数字字符串或者空字符
2 年多之前 回复
 /^[0-9]*?$/试试看,因为默认js是贪婪匹配
0

这和贪婪非贪婪无关,贪婪非贪婪只决定了匹配字符串的长度,如果它本身就无法匹配,那加不加?都没意义

0

这就是正则匹配的基本概念,正则匹配不仅能匹配字符,还能匹配只位置。
[0-9]*的意思就是说:我要么匹配数字,要么匹配任意一个位置。因此它可匹配的位置如下:
F*F*F <-- 其中*就代表它能匹配的地方。你可以写代码扫描一下这个正则匹配后的所有位置和长度就能验证我的说法。

0
china_sie
china_sie 非常谢谢
2 年多之前 回复
tang_cheng
tang_cheng 刚才的星号貌似提交时候被吃掉了:+F+F+F+ <--一共有4处匹配
2 年多之前 回复

推荐一个博文:http://blog.csdn.net/lxcnn/article/details/4268033 很详细的讲解了正则匹配的原理

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java进阶(九)正则表达式
java正则表达式 序 由于项目中使用到了利用正则表达式进行表单的校验,回想一下正则表达式的内容,忘得也差不多了,俗话说:“温故而知新,可以为师矣”。今天就简单的温故一下正则表达式,希望可以获得新的收获。   众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,
用java编写了一个计算器,阐述下编程过程遇到的难点?
首先,我认为编程之前
身份证正则表达式20180512
reg_18 = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|30|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/;注意跟网上的比加多了一个30地区: [1-9]\d{5}年的前两...
前端正则表达式问题
function validate(){        var reg = new RegExp("^[0-9]*$");        var obj = document.getElementById("name");     if(!reg.test(obj.value)){         alert("请输入数字!");     }     if(!/^[0-9]*$/.te
正则表达式 0-9的正整数
title: [/^(?:0|[1-9]?|9)$/, '请输入0-9的正整数'] /^(?:0|[1-9]?|9)$/ 0-9的正整数 /^(?:0|[1-9][0-9]?|9)$/ 0-99的正整数 /^(?:0|[1-9][0-9][0-9]?|9)$/ 0-999的正整数 /^([1-...
正则表达式 /^[0-9]+$/
/跟^这两个不是连一起用的 ,^是匹配字符串开始的意思,【0-9】意思就是只要是范围0-9里的东西都要,或者说只要不是数字都不要~ +的意思的^[0-9]的范围里匹配一次以上~ $是匹配结束符
Python正则表达式概述
1 re模块操作 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re 1.1 re模块的使用过程 #coding=utf-8 # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用...
时间的精准正则匹配
要用正则表达式精准匹配时间,其实并不容易 方式一: >>> import re >>> t = '19:10:48' >>> m = re.match(r'(.*):(.*):(.*)', t) >>> m.groups() ('19', '10', '48') 方式二: >>> t = '19:10:48' >>> m = re.match(r'(\d{2}):(\
9.java正则表达式
1.基础规则 1.1普通字符和简单转义字符  普通字符     字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是普通字符。     表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符简单的转义字符 \n 换行符 \t 制表符 \\ \本身 \^   \$   \.   \(    \)    \{...
Python常见正则表达式
一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$正数、负数、和小数:^(\-|\+)?\d+(\
正则表达式 常用符号
廖雪峰--正则表达式--简述。
全部的正则表达式
校验数字的表达式1. 数字:^[0-9]*$2. n位的数字:^\d{n}$3. 至少n位的数字:^\d{n,}$4. m-n位的数字:^\d{m,n}$5. 零和非零开头的数字:^(0|[1-9][0-9]*)$6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$8. 正数...
验证正则表达式(一),同时验证手机号码和固定电话号码
var reg=^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$|^0\d{2,3}-?\d{7,8}$;//正则表达式 主要实现代码如下: function CheckPhone(number){ var reg =/^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5
JS 手机/电话 正则表达式
代码如下  var telephone = $(&quot;#telephone&quot;).val();    //手机号or电话号var examineTele1 = /^(0|86|17951)?(13[0-9]|15[012356789]|17[01678]|18[0-9]|14[57])[0-9]{8}$/;  //手机验证var examineTele2 = /^(0[0-9]{2,3}\-)([2-9...
用过的手机正则
mobile = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;myreg=/^[1][3,4,5,7,8][0-9]{9}$/;
Ryu控制器正则表达式字符串 r'[0-9]{1,4}|all' 分析
在正则表达式中有3种类型的括号:方括号&quot;[&quot;和花括号&quot;{&quot;:方括号&quot;[&quot;内是需要匹配的字符,花括号&quot;{&quot;内是指定匹配字符的数量“a|b”:表示匹配a或者b在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不要转意反斜杠backslash '\' 。 例如,\n 在raw string中,是两个字符,\和n, 而不会转意为换行符。由于正则表达式和...
最新手机号码、固话号码正则表达式
1、手机号码,支持17开头       /^0?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/ 2、固话号码,支持400 或 800开头      /^0?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/ 3、手机号码、固话号码:
js 身份证 港澳通行证正则
var re = /^[HMhm]{1}([0-9]{10}|[0-9]{8})$/;//港澳通行证 function isCardNo(card)  {  // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X  var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)|(^[HMhm]{...
正则表达式和python结合
常见正则表达式符号和特殊符号表 记号 说明 实例 literal 匹配字符串的值 abc re1|re2 匹配正则表达式re1或re2 abc|123 .(dot) 匹配任何字符,换行符除外 (但编译标记[S或DOTALL能推翻这个限制]) a.a ^ 匹配字符串的开
最新JS验证手机号的正则表达式(含固话和手机,包括17、8、9号段)
//手机号正则 //phone为输入的号码值 var r=/^((0\d{2,3}-\d{7,8})|(1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}))$/; if(!r.test(phone)){ alert('号码格式错误,固话需加区号和符号‘-’'); return; };...
[教训][记录]关于java的KeyListener无法得到输入为[0-9,a-z,A-Z]和基本符号的KeyCode
之前我把原来在Win写的一个
jQuery(九)常用正则
正则表达式:可以进行验证数据合法性、查找数据位置、数据替换等对数据操作. 说明:new RegExp(pattern, attributes); pattern为表示表达式内容 attributes:g,全局匹配,i不区分大小写,m执行多行匹配,用最多的为g和i 例: 1、匹配变量reg中的字符串“hellow”,使用全局+不区分大小写进行匹配,匹配成功返回true。 var reg = new ...
如何使用sql表示正则表达式:[a-z][0-9a-z]
需求描述: 使用sql生成2位字符,遵循正则表达式:[a-z][0-9a-z] 正则表达式含义: 第1位:从a-z顺序进行编码; 第2位:从0-9,a-z进行编码; -- 生成算法 WITH x1 (id , cc) AS (SELECT 0 AS id , CHAR (ascii ('a')) AS cc UNION ALL SELECT id + 1 ...
iOS正则表达式 判断手机号 邮箱 电话 数字 身份证 银行卡
//昵称 + (BOOL) validateNickname:(NSString *)nickname; //姓名一般只允许包含中文或英文字母 + (BOOL)isValidateName:(NSString *)name; //用户名 + (BOOL) validateUserName:(NSString *)name; //密码 + (BOOL) va
[转载]正则验证11位手机号
function isPoneAvailable($poneInput) { var myreg=/^[1][3,4,5,7,8][0-9]{9}$/; if (!myreg.test($poneInput.val())) { return false; } else {
正则验证大全
一、校验数字的表达式1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8 正数...
最新手机号码验证正则表达式
转自:最新手机号码验证正则表达式js版由于手机号段的不断更新,以前的正则表达式已经无法满足需求。重新编写这条表达式,号段资料来源依据:http://www.jihaoba.com/tools/haoduan/根据u012815322 提供的号段资料:http://www.cnblogs.com/zengxiangzhan/p/phone.html (2018年4月) 现有手机号段:移动:134 1...
C语言版flappy bird
大神的C语言版flappy bird,可以随意修改,欢迎赐教讨论
时间正则
//日期的正则表达式 var reg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/; var regExp = new RegExp(reg); if(!regExp.test(value)){   alert(&quot;日期格式不正确,正确格式为:2014-01-01&quot;);   return; }   //时间的正则表达式 v...
Js一些正则表达式
通过一些例子来学习正则表达式摘录,js正则函数match、exec、test、search、replace、split 去除首尾的 //去除首尾的‘/’ input = input.replace(/^\/*|\/*$/g,''); javascript:; 、javascript:void(0) 'javascript:;'.match(/^(javascript\s*\:|#)/)...
“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思”
为了解答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统总结一下。  总结1:附件参数g的用法  表达式加上参数g之后,表明可以进行全局匹配,注意这里“可以”的含义。我们详细叙述:  1)对于表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行多
Qt正则表达式检测IPV4地址和端口号
IP: QRegExp addressExp(&quot;\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b&quot;); Port: QRegExp portExp(&quot;^([0-9]|[1-9]\\d|[1-9]\\d{2}|[1-9]\\d{3}|[1-5]\\
shell中正则表达式的使用
使用方法一:#赋值给变量var read var #定义regex正则表达式 regex="[0-9]"if [[ $var =~ $regex]];then #match #do something fi例如,对输入的内容进行匹配,要求必须是0-9之间的数字:#读取输入 read inputregex="[0-9]"if [[ $input =~ $regex ]];then
用正则表达式来判断文字是否仅为字母a-zA-Z1-9_的组合.
public Boolean isCharAndNumic(String str) { Boolean is = false; Pattern pt = Pattern.compile("^[0-9a-zA-Z]+$"); Matcher mt = pt.matcher(str); if (mt.matches()) { is = true; } return is; }
正则表达式(添如的 必须是 数字)
[code]public boolean isNumeric(String s) { Pattern pattern = Pattern.compile(&quot;[0-9]*&quot;); Matcher matcher = pattern.matcher(s); return matcher.matches(); } fu...
golang 正则表达式 regexp
用正则表达式判断邮箱、手机号、网站域名等是否合法,先上例子: package main import ( &quot;fmt&quot; &quot;regexp&quot; ) func main() { // Compile the expression once, usually at init time. // Use raw strings to avoid having to quote the backsl...
在移动端内嵌H5页面中数字框调用数字键盘,且只允许输入0-9和小数点的总结...
最初是想要在H5页面中输入数字的时候调起数字键盘,且只能输入数字和小数点,并且小数点后最多保留两位小数 实践证明: 1.input: type = 'number'时, 当输入的为非法数字 例如包括-+等,则在取value的值时判断为非数字就会将value自动置为‘’, 且在ios中number类型不能成功调起数字键盘,需要使用pattern调取数字键盘...
js正则验证手机号
  js正则验证页面手机号,是否符合规则 后面那截,是验证台湾的手机号(台湾手机10位数,皆以09起头),所以有台湾业务重点注意 //手机号正则 var phoneReg = /(^1[3|4|5|7|8]\d{9}$)|(^09\d{8}$)/; //电话 var phone = $.trim($('#buyer_phone').val()); if (!phoneReg.te...
正则表达式RegExp
验证数字类型输入 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$ 正数、负数、和小数:^(-|+)?\d+(
易语言钓鱼源码
求大神买走 求大神买走 易语言钓鱼源码
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据大神班 java大神班