关于正则表达式的易错点

由于工作需要,在使用JavaScript过程中需要对输入参数做一些前端判断,所以接触到正则表达式。网上有很多教程可以学习参考,我只是初次接触,写一点自己的小结和遇到的易错点。

默认有一个TextBox,对其输入的内容进行检测
var re=/^[0-9]$/i --只能输入一个数字
var re=/^[0-9]/i --第一位是数字,后面任意字符且字符长度不限
var re=/^[0-9]+/i --第一个是数字,后面字符任意、长度任意
var re=/^[0-9]$/i --只能输入一个数字
var re=/^[0-9]+$/i --只能输入数字,数字长度应大于等于1
var re=/^[0-9]{5,10}$/i --只能输入数字,数字长度应大于等于5、小于等于10
var re=/^[0-9]+\.[0-9]{2}$/i --只能输入正值的数字,整数部分不为空,小数部分是两位小数(.表示任意符号,\.表示小数点),建议将小数点及小数部分作为整体,写成这样 var re=/^[0-9]+(\.[0-9]{2})$/i
var re=/^[0-9]+(\.[0-9]{2})?$/i --只能输入正值的数字,可以是整数(可不带2位小数),也可以是小数(小数位数必须为2位)
var re=/^(-)?[0-9]+(\.[0-9]{2})?$/i --可以输入正数、负数和0,如果带小数必须是2位小数
var re= /^[\u4e00-\u9fa5]+$/i --只能输入汉字,且至少一个汉字
var re=/^[a-zA-Z]\w{4,9}$/i --以字母开头,后可以跟数字、字母或下划线,长度为5~10
var re=/^\d{15}|\d{18}$/i --验证身份证号(15位或18位数字)

小括号()
()内的内容作为一个主体,里面可以是或(|),如(hello|world)表示主体是hello或world中一个。
也可以是其他,如([a-z]hello)表示以一个小写字母开始后面紧跟hello

方括号[]
[]表示取值为中括号内的任意一个字符,内不加转义符\,单个字符后面不能加长度限制,否则限制结果异常
例子:欲限制首字符为小写字母,后面为任意字符,总长度3~5
本句不正确:var re=/^[a-z]{3,5}/i 当只输入一个字母时A时,test返回false,但是输入Aaaa时返回的竟是true
正确的应该是:var re=/^[a-z]\w{2,4}/i

上尖号^
[]里面如果首位加^,整个方括号应该作为一个主体,表示不希望出现[]内的任何字符
如 [^a-zA-Z] 表示不希望出现大小写字母

总结:
字符串是主体,包括数字、大小写字母、各类符号和中文等,主体可以由多部分组成。
主体可以是单字符,也可是多字符(多字符作为整体限制时应加上小括号)。
修饰限制符包括主体对象出场顺序限制(|)、长度限制(*、+、?以及{m,n}等)、位置限制(^和$:开始和结束)等,同一部分主体可以有多个修饰限制符,修饰限制符按从左到右顺序依次生效。
修饰限制符只对离自己左侧最近的主体有效,唯一例外的是开始修饰符(^),它出现在最左端对右侧第一个主体有效

表达能力原因,可能自己理解但表达欠妥。如有错误请指出。

时间: 2024-10-07 07:14:06

关于正则表达式的易错点的相关文章

开发易错点收集

开发易错点收集 1.java 比较字符串内容是否相等,需要使用方法 boolean java.lang.String.equals(Object arg0),直接使用 == 判断的是两个串的地址是否相等. jvm加载jar是按照文件名排序后加载的,加载一次后不会重复加载.也就是说程序目录lib中同时存在 TestJar1.jar 和 TestJar2.jar,运行时加载的是TestJar1.jar < 2.javaScript ''==0 返回为true ,用全等返回false,对于喜欢用if(

Javascript易错知识点

? JS易错知识点总结: == 和 === 的区别: ==:判断两个变量的值是否相等. ===:判断两个变量的类型和值是否都相等,两个条件同时满足时,表达式为True. switch中break的作用: 如果一个case后面的语句,没有写break,那么程序会向下执行,而不会退出: 例如:当满足条件的case 2下面没有break时,case 3也会执行 1 var num = 2; 2 switch(num){ 3 case 1: 4 alert('case 1'); 5 break; 6 c

黑马程序员---C基础3【变量的易错】【程序结构】【if语句】【Switch语句】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [变量的易错] 1.变量为什么要初始化为0 int  sum,a=3: sum = sum+a 如果未初始化则会成为一个不确定的变量,结果也会不确定,容易出错. 2.不同类型的变量之间的转换 切记int  a=1,b=0:b=1-1.5:其中b为一个整型所有结果是保留整数部分的0,而不是-0.5,又因为0没有正负之分,所有保存结果为b=0: 3.关于Xcode的一个快速注释的插件 快捷键://

细节!重点!易错点!--面试java基础篇(一)

今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的. 2.任何静态代码块都会在main方法之前执行. 3.java程序的初始化顺序:原则:静态优先于非静态,且只初始化一次:父类优先于子类:按照成员定义顺序初始化.例顺序:父类静态变量,父类静态代码块,子类静态变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块,子类构造函数. 4.

JavaScript易错知识点整理

本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一些ES6的知识点. JavaScript知识点 1.变量作用域 var a = 1; function test() { var a = 2; console.log(a); // 2 } test(); 上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. var a

GLES &amp; Shader Language 易错集锦

1. vertex shader 和 fragment shader 通过varying变量传递数据,  如下代码在编译fragment shader时候会提示编译错误 vertex shader Fragment shader varying vec4 v_color; \n attribute vec3 v_Position; \n attribute vec4 f_Color; \n void main(void) \n { \n gl_Position = vec4(v_Position

PHP数据访问易错点(20161030)

易错点: 1.造对象的时候括号里面的参数 写错了 $db = new MySQLi("localhost","root","789","1016"); 2.牵扯到传值的,前面的名字和后面的名字不匹配 <form action="1028afternoonaddchuli.php"  method="post"> <div>代号:<input type=&qu

页面制作(PS/HTML/CSS)易错点总结

今天做了网易云课堂的页面制作试卷,虽然分数暂未公布,但是已经知道了自己这段时间以来的成效.下面总结几个易错点: 1.Photoshop切图: 图片保存格式: a.图片色彩较为丰富但无透明度要求时应保存为jpg格式: b.当图片色彩不太丰富时无论有无透明要求时保存为png8,且设置“杂边:无:扩散:无仿色”: c.当图片有半透明要求,不对图片进行压缩,保存为24. 注意:PNG8格式图片的颜色模式是索引颜色,在修改前要先更改颜色模式为RGB颜色. 常用快捷键: a.Alt+shift+Ctrl+s

POJ3273 MonthlyExpense 【裸二分但易错】

详见blog.csdn.net/lyy289065406/article/details/6648554,也就一简单的很裸的二分... 以前看到一句话,90%的程序员会写错二分程序,果不其然,虽然前面二分都写对了,但这个确实卡了一下,还好去洗个澡回来就想出来了,哇哈哈哈 这个要注意,在L<R-1的时候就应该终止二分循环,然后手动选择答案(也就是说有时候二分最后一步需要自己手动选择答案) #include <iostream> #include <cstdio> #includ