对正则/^[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]*的意思就是说:我要么匹配数字,要么匹配任意一个位置。因此它可匹配的位置如下:
F*F*F <-- 其中*就代表它能匹配的地方。你可以写代码扫描一下这个正则匹配后的所有位置和长度就能验证我的说法。

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

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

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

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

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

0

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
学习大数据如何构建完整的知识结构?
我们都知道,现在人类已经从数字化过渡到信息化,在从信息化过渡到网络化,而未来的的发展方向就是智能化,智能化的出现也带来了很多新事物,比如说物联网、云计算、大数据、人工智能,这说明了信息时代发展的趋势,而大数据在信息时代发挥着重要的角色,那么大家知道不知道学习大数据的时候怎么构建完整的知识结构呢?下面就由小编为大家解答一下这个问题。 很多人认为...
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]的范围里匹配一次以上~ $是匹配结束符
时间的精准正则匹配
要用正则表达式精准匹配时间,其实并不容易 方式一: >>> 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 制表符 \\ \本身 \^   \$   \.   \(    \)    \{...
正则表达式 常用符号
廖雪峰--正则表达式--简述。
最新手机号码、固话号码正则表达式
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验证手机号的正则表达式(含固话和手机,包括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; };...
jQuery(九)常用正则
正则表达式:可以进行验证数据合法性、查找数据位置、数据替换等对数据操作. 说明:new RegExp(pattern, attributes); pattern为表示表达式内容 attributes:g,全局匹配,i不区分大小写,m执行多行匹配,用最多的为g和i 例: 1、匹配变量reg中的字符串“hellow”,使用全局+不区分大小写进行匹配,匹配成功返回true。 var reg = new ...
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, 而不会转意为换行符。由于正则表达式和...
手机号码正则(2018年8月13日修订)
对10号段没有做谨慎约束的电话号码正则: var phone = /^(10[0-9]|13[0-9]|14[1456789]|15[0-3,5-9]|16[6]|17[01235678]|18[0-9]|19[89])\d{8}$/;       特殊号段: 1064号段   与1440、1410 /^(1440[0-9]|1410[0-9]|1064[689])\d{6}$/; ...
只能输入数字0-9 正则表达式,兼容Google Firefox IE浏览器
在Web页面输入框,只能输入数字,这个可以使用JS完成,但使用正则表达式更方便,查找了下有用onkeypress()和oninput()这两个事件来处理,我都尝试了下,结果如下: onkeypress=&amp;amp;amp;quot;return (/[\d$]/.test(String.fromCharCode(event.which||event.KeyCode)))&amp;amp;amp;quot; oninput='this.value = th...
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+(\
Shell script - 如何用正则表达式匹配IP地址
grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' INPUT_FILE for example: echo 10.9.221.190 | grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
Python正则表达式概述
1 re模块操作 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re 1.1 re模块的使用过程 #coding=utf-8 # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用...
全部的正则表达式
校验数字的表达式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. 正数...
如何使用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
C#-正则基础 [0-9] 匹配数字
 .NET Framework : 4.7.2        IDE : Visual Studio Community 2019        &nbsp;OS : Windows 10 x64    &nbsp;typesetting : Markdown       &nbsp;&nbsp;blog : blog.csdn.net/yushaopu      &nbsp;&nbsp;gi...
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]{...
正则验证大全
一、校验数字的表达式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...
“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思”
为了解答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统总结一下。  总结1:附件参数g的用法  表达式加上参数g之后,表明可以进行全局匹配,注意这里“可以”的含义。我们详细叙述:  1)对于表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行多
C语言版flappy bird
大神的C语言版flappy bird,可以随意修改,欢迎赐教讨论
Js一些正则表达式
通过一些例子来学习正则表达式摘录,js正则函数match、exec、test、search、replace、split 去除首尾的 //去除首尾的‘/’ input = input.replace(/^\/*|\/*$/g,''); javascript:; 、javascript:void(0) 'javascript:;'.match(/^(javascript\s*\:|#)/)...
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-Z]” 和 “[^a-zA-Z]”的区别
^[a-zA-Z]是去匹配目标字符串中以中括号中的a—z或者A—Z开头的字符 [^a-zA-Z]是去匹配目标字符串中非a—z也非A—Z的字符
电话号码正则匹配
import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils { public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true;
Js 正则表达式 正整数或一位小数或者俩位小数的正则表达式的写法
正整数或一位小数或者俩位小数的正则表达式的写法 ^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$
正则表达式(添如的 必须是 数字)
[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...
总结一下项目中常用的正则validate及键盘的一些事件
$(function(){ // 匹配姓名 全英文带空格或者全中文不能英文中文混合 /^([a-zA-Z ]+|[\u4e00-\u9fa5]+)$/ // 只能输入[0-9]数字 /^\d+$/ // 只能输入6位数字 /^\d{
用正则表达式来判断文字是否仅为字母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; }
RegExp正则表达式(简单入门)
RegExp正则表达式所有内容为作者自己学习的笔记,未经同意,禁止转载1. 定义的方法:new RegExp(‘模式字符串’,’模式匹配符’)var box = new RegExp('Box'); //第一个参数是模式字符串 alert(box); // /Box/两个反斜扛是正则表达式的自变量表示法var box = new RegExp('Box','ig'); //模式修饰符i:
易语言钓鱼源码
求大神买走 求大神买走 易语言钓鱼源码
常用的 正则校验
/** 验证是否为EMAIL格式 */  public static final String EMAIL = &quot;('')|(\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*)&quot;;  /** 验证电话号码 */  public static final String TELEPHONE = &quot;('')|(\\d{4}(-*)\\d{8}|\...
jquery.validate使用攻略 第五步 正则验证
// 手机号码验证  jQuery.validator.addMethod("mobile", function(value, element) {  var length = value.length;  var mobile = /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/  return this.optional(element) || (leng
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java大神班 大数据大神班