经典实例正则表达式-

合集下载

正则表达式实例详解

正则表达式实例详解

正则表达式实例详解
正则表达式(Regular Expression)是一种特殊的文本模式,它可以用来搜索、替换或检查文本中的模式。

正则表达式也被称为规则表达式、表达式或字符串。

它可以用于大多数编程语言,包括Python、Perl、PHP、JavaScript、C#、C++和Ruby。

正则表达式由一组特殊字符组成,这些特殊字符可以用来搜索、替换或检查文本中的模式。

例如,在Python中,可以使用正则表达式来搜索文本中的日期模式,如2020-01-01,或者搜索文本中的电子邮件格式,如*******************。

正则表达式还可以用来检查文本中是否存在特定的模式,例如密码是否包含大写字母、小写字母和数字。

正则表达式也可以用来替换文本中的模式。

例如,可以使用正则表达式来将文本中的所有数字替换为字母,或者将文本中的所有非字母字符替换为空格。

正则表达式还可以用来替换文本中符合特定模式的文本,例如将文本中所有的“cat”替换为“dog”。

总的来说,正则表达式是一种强大的文本模式,可以用来搜索、替换或检查文本中的模式。

它可以用于许多编程语言,可以节约时间和精力,并且可以用来实现许多复杂的任务。

常用的正则表达式代码汇总

常用的正则表达式代码汇总

常⽤的正则表达式代码汇总常⽤的正则表达式代码汇总常⽤的正则表达式代码汇总:1。

^\d+$ //匹配⾮负整数(正整数 + 0)2。

^[0-9]*[1-9][0-9]*$ //匹配正整数3。

^((-\d+)|(0+))$ //匹配⾮正整数(负整数 + 0)4。

^-[0-9]*[1-9][0-9]*$ //匹配负整数5。

^-?\d+$ //匹配整数6。

^\d+(\.\d+)?$ //匹配⾮负浮点数(正浮点数 + 0)7。

^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数8。

^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配⾮正浮点数(负浮点数 + 0)9。

^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数10。

^(-?\d+)(\.\d+)?$ //匹配浮点数11。

^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串12。

^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串13。

^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串14。

^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串15。

^\w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串16。

^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址17。

^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url18。

匹配中⽂字符的正则表达式: [\u4e00-\u9fa5]19。

匹配双字节字符(包括汉字在内):[^\x00-\xff]20。

正则表达式PPT示例讲解.ppt

正则表达式PPT示例讲解.ppt
• Examples Analysis
– ……
• Additional Matters
– Experience & Skills – Recommend for learning
• Q&A
Introduction
Some notes about Regular Expressions
Some notes about Regular Expressions
• 起源 – 最早从 Unix 中的qed 编辑器,并作为文本编辑和搜索工具中一个 重要部分直到现在,属于Unix下专利,尤其是Perl中应用,NET中 Regex从Perl中衍生而来
• 简单定义? – 简写为 Regexes,描述了一种字符串匹配的模式,检查一个串是否 含有某种子串、将匹配的子串做替换或者从某个串中取出符合某 个条件的子串等。也即是一串特殊的字符,转换为某种算法,根 据这个算法来匹配文本 (类似通配符、SQL中的%、词法语法分析)。
反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹 配“plain”中的“p”。
字符范围。匹配指定范围内的任何字符。例如,“[a-z]”匹 配“a”到“z”范围内的任何小写字母
反向范围字符。匹配不在指定的范围内的任何字符。例如, “[^a-z]”匹配任何不在“a”到“z”范围内的任何字符
括号中的任一字符
DEMO
Match different charact符、文本、反向引用或八进制转义 符。例如, “\n”匹配换行符,“\\”匹配“\”,[\-]转义连字符, 当查找?、“。”、[name]不作为单字符(\[name\])等时候使用
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供 以后使用。要匹配这些字符,请使用 \( 和 \)

正则表达式150种表达方式

正则表达式150种表达方式

正则表达式150种表达方式1、删除所有数字。

只要查找:\d就OK。

为了不留空行:替换处:\d2、删除所有英文字母。

只要查找:\a就OK。

为了不留空行:替换处:\d3、删除除换行符以外的所有。

只要查找:. 为了不留空行:替换处:\d4、既删除英文字母又删除数字。

只要查找:\w。

为了不留空行:替换处:\d5、删除数字加字母加等于(如:3a=或3zz=)只要查找:\d+\a+\=。

为了不留空行:替换处:\d6、删除换行。

只要查找:$。

替换处:\d(还原查找:\a+=\f。

替换:\0\n)。

如在换行后加一空格,查找:(\a)$。

替换:\0 \d。

7、删除空行只要查找:^$。

为了不留空行:替换处:\d8、删除首尾空格。

只要查找:^\s*|\s*$就OK9、删除行前数字及顿号。

只要查找:\d+、替换为空10、删除末尾标点符号。

只要查找:\P+$|\P+\s+$,“|”前面是没有空格的,“|”后面有空格,P后的加是为了……而用的。

11、删除末尾空格。

只要查找:\s+$。

替换为空。

12、删除第一个字如:“的我们”中的“的”只要查找:^\的。

13、删除第几个字。

查找:查找:^().(.+)。

替换:\1\2。

去掉前面的拼音:查找:^\a+替换为空。

第一个括号里可加“.”且可变。

14、删含的。

查:.*的.*替:\d。

的头查:.*=的.*替:\d。

的尾查:\a.*\c.*的$替:\d(留它不匹配)●删非的行查:^[^的]+$替:\d15、删除几码以上的码查:^(...)...替:\1。

删第几位码。

查:^(...).(.+)替:\1\2(变成\1,\2则其位则改成,了)首括号的.可变。

16、删除各类型的几字词,但必须是码前词后或纯词。

三字词:查找:^\~f{}\f{3}$替换:\d。

替换:\d “3”可以改。

17、删除11字词及其以上的词条查找(自定义格式):\a{}\=(\c|\P|\p){11,}。

替换:\d。

11可改。

正则办公用法实例

正则办公用法实例

正则办公用法实例
1. 查找手机号码:
正则表达式:\d{11}
用法实例:
- 可以用于验证用户输入的手机号码是否符合格式要求;
- 可以用于从一段文本中提取出所有的手机号码。

2. 邮箱验证:
正则表达式:\w+@\w+\.\w+
用法实例:
- 可以用于验证用户输入的邮箱地址是否符合格式要求;
- 可以用于从一段文本中提取出所有的邮箱地址。

3. 验证密码强度:
正则表达式:^(?=.*[a-z])(?=.*[A-
Z])(?=.*\d)(?=.*[!@#$%^&*()\-_=+{};:,<.>]).{8,}
用法实例:
- 可以用于验证用户输入的密码是否符合一定的强度要求,如至少包含一个小写字母、一个大写字母、一个数字、一个特殊字符;
- 可以用于注册时的密码强度检测。

4. 验证身份证号码:
正则表达式:^\d{17}[\dXx]$
用法实例:
- 可以用于验证用户输入的身份证号码是否符合格式要求。

5. 验证日期格式:
正则表达式:^\d{4}-\d{1,2}-\d{1,2}$
用法实例:
- 可以用于验证用户输入的日期是否符合格式要求,如"2022-01-01"。

6. 查找网址:
正则表达式:(http|https)://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
用法实例:
- 可以用于从一段文本中提取出所有的网址。

以上仅是一些常见的办公用法实例,正则表达式还可以用于更复杂的需求,如匹配特定格式的文件名、过滤文本中的敏感词等。

正则表达式-语法大全

正则表达式-语法大全

正则表达式-语法⼤全1. 正则表达式规则1.1 普通字符字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。

表达式中的普通字符,在匹配⼀个字符串的时候,匹配与之相同的⼀个字符。

,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。

(注:下标从0开始还是从1开始,因当前编程语⾔的不同⽽可能不同),匹配结果是:成功;匹配到的内容是:"bcd";匹配到的位置是:开始于1,结束于4。

1.2 简单的转义字符⼀些不便书写的字符,采⽤在前⾯加 "/" 的⽅法。

这些字符其实我们都已经熟知了。

表达式可匹配/r, /n代表回车和换⾏符/t制表符//代表 "/" 本⾝还有其他⼀些在后边章节中有特殊⽤处的标点符号,在前⾯加 "/" 后,就代表该符号本⾝。

⽐如:^, $ 都有特殊意义,如果要想匹配字符串中 "^" 和 "$" 字符,则表达式就需要写成 "/^" 和 "/$"。

表达式可匹配/^匹配 ^ 符号本⾝/$匹配 $ 符号本⾝/.匹配⼩数点(.)本⾝这些转义字符的匹配⽅法与 "普通字符" 是类似的。

也是匹配与之相同的⼀个字符。

,匹配结果是:成功;匹配到的内容是:"$d";匹配到的位置是:开始于3,结束于5。

1.3 能够与 '多种字符' 匹配的表达式正则表达式中的⼀些表⽰⽅法,可以匹配 '多种字符' 其中的任意⼀个字符。

⽐如,表达式 "/d" 可以匹配任意⼀个数字。

虽然可以匹配其中任意字符,但是只能是⼀个,不是多个。

这就好⽐玩扑克牌时候,⼤⼩王可以代替任意⼀张牌,但是只能代替⼀张牌。

正则表达式15个常用实例

正则表达式15个常用实例

正则表达式15个常用实例正则表达式是一种文本模式语言,它允许用户通过指定模式来查找或替换文本。

它在编程语言和许多计算机应用程序中都有用,特别是在解析和处理文本时。

下面我们就来看看正则表达式的15个常用实例。

1.匹配字符串中的数字:\d+ 。

2.匹配字符串中的小写字母:[a-z] 。

3.匹配字符串中的大写字母:[A-Z] 。

4.匹配字符串中的所有单词字符:\w+ 。

5.匹配字符串中的空格字符:\s+ 。

6.匹配字符串中的日期:\d{4}-\d{2}-\d{2} 。

7.匹配字符串中的邮箱地址:[a-zA-Z0-9]+@[a-z]+\.[a-z]+ 。

8.匹配字符串中的URL:https?:\/\/[a-zA-Z0-9]+\.[a-z]+ 。

9.匹配字符串中的IP地址:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 。

10.匹配字符串中的HTML标签:<[a-zA-Z0-9]+> 。

11.匹配字符串中的HTML属性:\w+=".*?" 。

12.匹配字符串中的中文字符:[\u4e00-\u9fa5] 。

13.匹配字符串中的特殊字符:[\^\.\?\*\+\$\[\]\(\)\{\}\\\/\|] 。

14.匹配字符串中的任意字符:. 。

15.匹配字符串中的任意位置:^$ 。

正则表达式非常强大,它可以用来检测字符串中的任何模式,并执行替换或提取操作。

正则表达式的15个常用实例只是用来提醒用户,它们只是正则表达式的一小部分。

正则表达式的应用种类很多,可以用来检测文本格式、搜索特定字符串、数据验证和替换文本。

有了正则表达式,开发者可以更有效地处理文本,从而大大提高工作效率。

JS常用正则表达式总结【经典】

JS常用正则表达式总结【经典】

JS常⽤正则表达式总结【经典】本⽂实例讲述了JS常⽤正则表达式。

分享给⼤家供⼤家参考,具体如下:在项⽬中个⼈写的⼀个常⽤验证的正则表达式:(仅供参考)//定义两个全局变量var reg;var errorInfo;//输⼊的数字类型必须是int型,正负整数都可以function validate_integer(text,value){reg=/^[-\+]?\d+$/;errorInfo=text+" "+value+" 只能是整数,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//输⼊的数字类型必须是double型,保留的⼩数位数只能是2位,可以为正负function validate_double(text,value){reg=/^[-\+]?([1-9](\d+)?|0)(\.\d{2})$/;errorInfo=text+" "+value+" 只能保留2为⼩数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//输⼊的必须是全是数字类型型,不能出现其他字符function validate_number(text,value){reg=/^\d+$/;errorInfo=text+" "+value+" 只能是数字,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证输⼊n位的数值类型function validate_number_n(text,value,n){reg=eval("/^\\d{"+n+"}$/");errorInfo=text+" "+value+" 只能是"+n+"位数字,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证有两位⼩数的正实数function validate_decimal_two(text,value){reg=/^([1-9](\d+)?|0)(.[0-9]{2})?$/;errorInfo=text+" "+value+" 只能是保留2位⼩数的正数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮零的正整数function validate_number_positive(text,value){reg=/^\+?[1-9][0-9]*$/;errorInfo=text+" "+value+" 只能是⾮0的正整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮零的负整数function validate_number_negative(text,value){reg=/^[-][1-9][0-9]*$/;errorInfo=text+" "+value+" 只能是⾮0的负整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮负整数,可以为0function validate_positive_haszero(text,value){reg=/^[1-9](\d+)?|0$/;errorInfo=text+" "+value+" 只能是是0或正整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮正整数,可以为0function validate_negative_haszero(text,value){reg=/^\-[1-9](\d+)?|0$/;errorInfo=text+" "+value+" 只能是是0或负整数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证⾮负浮点数(正浮点数 + 0)function validate_float_notnegative(text,value){reg=/^([1-9](\d+)?|0)(\.\d+)|0$/;errorInfo=text+" "+value+" 只能是是0或正浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证正浮点数function validate_float_positive(text,value){reg=/^([1-9](\d+)?|0)(\.\d+)$/;errorInfo=text+" "+value+" 只能是正浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//⾮正浮点数(负浮点数 + 0)function validate_float_notpositive(text,value){reg=/^\-([1-9](\d+)?|0)(\.\d+)|0$/;errorInfo=text+" "+value+" 只能是是0或者负浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证负浮点数function validate_float_negative(text,value){reg=/^\-([1-9](\d+)?|0)(\.\d+)$/;errorInfo=text+" "+value+" 只能是负浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证正浮点数多少位⼩数function validate_float_posbit(text,value,n){reg=eval("/^(\\d+)(\\.\\d{"+n+"})$/");errorInfo=text+" "+value+" 只能是"+n+"位正浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//验证负浮点数多少位⼩数function validate_float_negbit(text,value,n){reg=eval("/^(-?\\d+)(\\.\\d{"+n+"})$/");errorInfo=text+" "+value+" 只能是"+n+"位负浮点数,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//校验⽂本是否为空function checknull(text,value){if(value=="" || typeof(value)=='undefined'){errorInfo=text+" "+value+" 不能为空,请重新输⼊!";returnInfo(errorInfo);}}//验证由26个英⽂字母组成的字符串function validate_string_letter(text,value){reg=/^[A-Za-z]+$/;errorInfo=text+" "+value+" 只能是26位不区分⼤⼩写的英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由26个英⽂字母的⼤写组成的字符串function validate_string_bigletter(text,value){reg=/^[A-Z]+$/;errorInfo=text+" "+value+" 只能是26位⼤写的英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由26个英⽂字母的⼩写组成的字符串function validate_string_smallletter(text,value){reg=/^[a-z]+$/;errorInfo=text+" "+value+" 只能是26位⼩写的英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由数字和26个英⽂字母组成的字符串function validate_string_number(text,value){reg=/^[A-Za-z0-9]+$/;errorInfo=text+" "+value+" 只能是数字和26个英⽂字母组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证由数字、26个英⽂字母或者下划线组成的字符串function validate_string_numberandunderline(text,value){reg=/^\w+$/;errorInfo=text+" "+value+" 只能是数字、26个英⽂字母或者下划线组成,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}//验证邮箱function validate_email(value){reg=/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;errorInfo='邮箱 '+value+" ⽆效,请重新输⼊";verifyByReg(value,reg,errorInfo);}//验证时如果选择默认调⽤此⽅法⾦额类型,可以是正整数或保留4位有效数字的正整数/**有问题function validate_money_default(text,value){var reg=/^\d+(\.\d{4})?$/;var errorInfo=text+" "+value+" 只能是正整数或保留4位有效数字,请核实重新输⼊"; verifyByReg(value,reg,errorInfo);}**///验证输⼊的只能是中⽂function validate_chinese(text,value){reg=/^[\u4e00-\u9fa5]+$/;errorInfo=text+" "+value+" 只能是中⽂字符,请重新输⼊";verifyByReg(value,reg,errorInfo);}//验证输⼊的只能是n位的中⽂function validate_bitchinese(text,value,bit){reg=eval("/^[\\u4e00-\\u9fa5]{"+bit+"}$/");alert(reg);errorInfo=text+" "+value+" 只能是"+bit+"位中⽂字符,请重新输⼊";verifyByReg(value,reg,errorInfo);}//跟最⼤的值⽐较,此⽅法是看数字是否超出系统的上限function thanMax(text,number,max){if(number>max){errorInfo=text+" "+number+" 不能⼤于"+max+",请重新输⼊";returnInfo(errorInfo);}}//跟最⼩的值⽐较,此⽅法是看数字是否低于系统的下限function thinMin(text,number,min){if(number<min){errorInfo=text +" "+number+" 不能⼩于"+min+",请重新输⼊";returnInfo(errorInfo);}}//输⼊⽂本的字符串是否在系统的指定长度内function isLimit(text,value,length){var arr=value.split("");if(arr.length>length){errorInfo=text +" "+value+" 字符过长,请输⼊最多"+length+"位字符";returnInfo(errorInfo);}}//邮政编码的验证function validate_zipcode(value){reg=/[1-9]\d{5}(?!\d)/;errorInfo='邮政编码 '+value+" 有误,请核实重新输⼊";verifyByReg(value,reg,errorInfo);}//对数值类型的数据进⾏简单的验证和转换,因为在设置的时候没有传⼊这个参数的话就会出现js代码错误,所以应该对数值型的数据进⾏转换//⾮空字符的判定function getZeroByNull(text,value){errorInfo=text+" "+value+" 不能为空,请核实重新输⼊";if(value==null||value==''||value=='undefined'){returnInfo(errorInfo);}}//⾝份证验证,分为了两种,15位和18位function validate_IdCard(value){var size=value.split("");if(size.length==15){reg=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//15位⾝份证验证errorInfo='位⾝份证号码 '+value+" 有误,请核实重新输⼊";}else if(size.length==18){reg=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/;//18位⾝份证验证errorInfo='位⾝份证号码 '+value+" 有误,请核实重新输⼊";}else{errorInfo="请输⼊合法的⾝份证号码!";returnInfo(errorInfo);}verifyByReg(value,reg,errorInfo);}//每个验证都需要调⽤此⽅法function verifyByReg(value,reg,errorInfo){if(value!=''&&reg!=''){var regExp = new RegExp(reg);if(!regExp.test(value)){alert(errorInfo);throw errorInfo;}}}//不进过正则表达式验证,只需要返回信息,适合内部调⽤此⽅法function returnInfo(message){alert(message);throw message;}//许可证号⽣产企业的格式:QS 1234 2346 3456 其中空格可有可⽆///经营企业许可证的格式为: 湘010249 但是中国的省会简称可能会有三个字的,所以中⽂可以定义为1-3个function validate_license(value,type){if(type==1){reg=/^[a-zA-Z]{2}[ ]?(\d{4}[ ]?\d{4}[ ]?\d{4})$/;//⽣产企业许可证号errorInfo="⽣产许可证号 "+value+" 有误,请核实重新输⼊!";}else if(type==2){reg=/^[\u4e00-\u9fa5]{1,3}\d{6}$/;errorInfo="经营许可证号 "+value+" 有误,请核实重新输⼊!";}verifyByReg(value,reg,errorInfo);}//传真可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等function validate_fax(value){reg=/^([+]{0,1})?\d{1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;errorInfo="传真 "+value+" 有误,请重新输⼊!";verifyByReg(value,reg,errorInfo);}//电话号码可以输⼊:电话或者⼿机其中⼿机号码可以是(+86)、(86)+号码,也可以是号码电话的号码可以是区号+号码区号-号码号码function validate_tel(value){reg=/(^(0\d{2,3}([-|+])?)?\d{7}$)|(^(\d{3,4}([-|+])?)?\d{7,8}$)|(^([+]?(86)?[+]?)1[3-9]\d{9}$)/;errorInfo='电话号码 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//⽇:⼤于0⼩于等于31的正整数function validate_day(value){reg=/(^[0]?[1-9]$)|(^[1-2]\d$)|(^[3][0-1]$)/;errorInfo='⽇期 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//⽉:合法⽉份function validate_month(value){reg=/(^[0]?[1-9]$)|(^[1][0-2]$)/;errorInfo='⽉份 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//年:合法年份在这⾥合法的年份为公元1000年⾄公元2999年function validate_year(value){reg=/^[1-2]\d{3}$/;errorInfo='年份 '+value+" 有误,请核实重新输⼊!";verifyByReg(value,reg,errorInfo);}//百分⽐:合法百分⽐(0-100之前的数字)function validate_percentage(text,value){reg=/(^[1-9](\d)?(\.\d+)?$)|(^0(\.\d+)?$)|(^100$)/;errorInfo=text +" "+value+" 有误,请输⼊0到100的数字!";verifyByReg(value,reg,errorInfo);}//系数:⼩于等于1的正数在这⾥系数的⼩数点后⾯也是2位function validate_modulus(text,value){reg=/^[0](\.\d{2})$|^[1](\.[0]{2})?$/;errorInfo=text+" "+value+" 有误,请输⼊⼩于0到1的数字!";verifyByReg(value,reg,errorInfo);}//验证⾮负的正数,包含了正整数和正浮点数function validate_posnumhaszero(text,value){checknull(text,value);reg=/^[1-9](\d+)?(\.\d+)?$|^0(\.\d+)?$/;errorInfo=text+" "+value+" 有误,请输⼊⼤于或等于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证⾮正的负数,包含了负整数和负浮点数function validate_negnumhaszero(text,value){checknull(text,value);reg=/^[-][1-9](\d+)?(\.\d+)?$|^[-]0(\.\d+)?$/;errorInfo=text+" "+value+" 有误,请输⼊⼩于或等于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证正数,包含了正整数和正浮点数function validate_posnum(text,value){checknull(text,value);reg=/^[1-9](\d+)?(\.\d+)?$|^0(\.\d+)$/;errorInfo=text+" "+value+" 有误,请输⼊⼤于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证负数,包含了负整数和负浮点数function validate_negnum(text,value){checknull(text,value);reg=/^[-][1-9](\d+)?(\.\d+)?$|^[-]0(\.\d+)$/;errorInfo=text+" "+value+" 有误,请输⼊⼩于0 的数字!";verifyByReg(value,reg,errorInfo);}//验证数,包括所有的数值,正数、负数、正浮点数、负浮点数function validate_allnum(text,value){checknull(text,value);reg=/^[-|+]?[1-9](\d+)?(\.\d+)?$|^[-|+]?0(\.\d+)?$/;errorInfo=text+" "+value+" 有误,请输⼊数字!";verifyByReg(value,reg,errorInfo);}PS:这⾥再为⼤家提供2款⾮常⽅便的正则表达式⼯具供⼤家参考使⽤:更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家JavaScript程序设计有所帮助。

20个常用的正则表达式 单字母

20个常用的正则表达式 单字母

正则表达式(Regular Expression)是一种用于匹配字符串的强大工具。

它通过使用特定的符号和字符来描述和匹配一系列字符串,能够满足我们在处理文本时的各种需求。

在这篇文章中,我们将深入探讨20个常用的单字母正则表达式,并通过实例来展示它们的使用方法。

1. \b在正则表达式中,\b表示单词的边界。

它可以用来匹配单词的开头或结尾,用于查找特定单词而不是单词的一部分。

2. \d\d表示任意一个数字字符。

它可以用来匹配任何数字,例如\d+可以匹配一个或多个数字字符。

3. \w\w表示任意一个字母、数字或下划线字符。

它可以用来匹配单词字符,例如\w+可以匹配一个或多个单词字符。

4. \s\s表示任意一个空白字符,包括空格、制表符、换行符等。

它可以用来匹配空白字符,例如\s+可以匹配一个或多个空白字符。

5. \.\.表示匹配任意一个字符,包括标点符号和空格等。

它可以用来匹配任意字符,例如\.可以匹配任意一个字符。

6. \A\A表示匹配字符串的开始。

它可以用来确保匹配发生在字符串的开头。

7. \Z\Z表示匹配字符串的结束。

它可以用来确保匹配发生在字符串的结尾。

8. \b\b表示单词的边界。

它可以用来匹配单词的开头或结尾,用于查找特定单词而不是单词的一部分。

9. \D\D表示任意一个非数字字符。

它可以用来匹配任何非数字字符。

10. \W\W表示任意一个非单词字符。

它可以用来匹配任何非单词字符。

11. \S\S表示任意一个非空白字符。

它可以用来匹配任何非空白字符。

12. \[\[表示匹配方括号。

它可以用来匹配包含在方括号内的字符。

13. \]\]表示匹配方括号。

它可以用来匹配包含在方括号内的字符。

14. \(\(表示匹配左括号。

它可以用来匹配包含在左括号内的字符。

15. \)\)表示匹配右括号。

它可以用来匹配包含在右括号内的字符。

16. \{\{表示匹配左花括号。

它可以用来匹配包含在左花括号内的字符。

17. \}\}表示匹配右花括号。

正则表达式实用语法大全

正则表达式实用语法大全

正则表达式基本符号:^ 表示匹配字符串的开始位置 (例外用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)$ 表示匹配字符串的结束位置* 表示匹配零次到多次+ 表示匹配一次到多次 (至少有一次)表示匹配零次或一次. 表示匹配单个字符| 表示为或者,两项中取一项( ) 小括号表示匹配括号中全部字符[ ] 中括号表示匹配括号中一个字符范围描述如[0-9 a-z A-Z]{ } 大括号用于限定匹配次数如 {n}表示匹配n个字符 {n,}表示至少匹配n个字符{n,m}表示至少n,最多m\ 转义字符如上基本符号匹配都需要转义字符如 \* 表示匹配*号\w 表示英文字母和数字 \W 非字母和数字\d 表示数字 \D 非数字常用的正则表达式匹配中文字符的正则表达式: [\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s| ]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?sql语句:^(select|drop|delete|create|update|insert).*$1、非负整数:^\d+$2、正整数:^[0-9]*[1-9][0-9]*$3、非正整数:^((-\d+)|(0+))$4、负整数:^-[0-9]*[1-9][0-9]*$5、整数:^-?\d+$6、非负浮点数:^\d+(\.\d+)?$7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$9、负浮点数:^(-((正浮点数正则式)))$10、英文字符串:^[A-Za-z]+$11、英文大写串:^[A-Z]+$12、英文小写串:^[a-z]+$13、英文字符数字串:^[A-Za-z0-9]+$14、英数字加下划线串:^\w+$15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$ 或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$17、邮政编码:^[1-9]\d{5}$18、中文:^[\u0391-\uFFE5]+$19、电话号码:^((\d2,3)|(\d{3}\-))?(0\d2,3|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$20、手机号码:^((\d2,3)|(\d{3}\-))?13\d{9}$21、双字节字符(包括汉字在内):^\x00-\xff22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>24、匹配空行:\n[\s| ]*\r25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *=*('|")?(\w|\\|\/|\.)+('|"| *|>)?26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)29、提取信息中的中国手机号码:(86)*0*13\d{9}30、提取信息中的中国固定电话号码:(\d3,4|\d{3,4}-|\s)?\d{8}31、提取信息中的中国电话号码(包括移动和固定电话):(\d3,4|\d{3,4}-|\s)?\d{7,14}32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+34、提取信息中的任意数字:(-?\d*)(\.\d+)?35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)36、电话区号:/^0\d{2,3}$/37、腾讯QQ号:^[1-9]*[1-9][0-9]*$38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$。

正则表达式及应用

正则表达式及应用

正则表达式及应⽤正则表达式及应⽤⼀、正则表达式(⼀)、概念:正则表达式(regular expression)就是由普通字符(例如a 到z)以及特殊字符(称为元字符)组成的⼀种字符串匹配的模式,可以⽤来检查⼀个串是否含有某种⼦串、将匹配的⼦串做替换或者从某个串中取出符合某个条件的⼦串等。

(⼆)、正则表达式中主要元字符:【其中常⽤的元字符⽤红⾊标出,红⾊的元字符必须掌握。

难点⽤蓝⾊标出,难点在⼀般的应⽤中并不常⽤】1.\将下⼀个字符标记为⼀个特殊字符、或⼀个原义字符、或⼀个向后引⽤、或⼀个⼋进制转义符。

例如,'n' 匹配字符"n"。

'\n' (newline)匹配⼀个换⾏符。

序列 '\\' 匹配 "\" ⽽"\(" 则匹配 "("。

…\r? (return)2.^匹配输⼊字符串的开始位置。

如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。

3.$匹配输⼊字符串的结束位置。

如果设置了RegExp 对象的Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。

4.*匹配前⾯的⼦表达式零次或多次。

例如,zo* 能匹配 "z" 以及 "zoo"。

* 等价于{0,}。

5.+匹配前⾯的⼦表达式⼀次或多次。

例如,'zo+' 能匹配 "zo"以及 "zoo",但不能匹配 "z"。

+ 等价于 {1,}。

6.?匹配前⾯的⼦表达式零次或⼀次。

例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。

Python正则表达式使用经典实例

Python正则表达式使用经典实例

Python正则表达式使⽤经典实例下⾯列出Python正则表达式的⼏种匹配⽤法,具体内容如下所⽰:1.测试正则表达式是否匹配字符串的全部或部分regex=ur"" #正则表达式if re.search(regex, subject):do_something()else:do_anotherthing()2.测试正则表达式是否匹配整个字符串regex=ur"\Z" #正则表达式末尾以\Z结束if re.match(regex, subject):&nbsp;&nbsp;&nbsp;&nbsp;do_something()else:&nbsp;&nbsp;&nbsp;&nbsp;do_anotherthing()3.创建⼀个匹配对象,然后通过该对象获得匹配细节(Create an object with details about how the regex matches (part of) a string)regex=ur"" #正则表达式match = re.search(regex, subject)if match:&nbsp;&nbsp;&nbsp;&nbsp;# match start: match.start()&nbsp;&nbsp;&nbsp;&nbsp;# match end (exclusive): atch.end()&nbsp;&nbsp;&nbsp;&nbsp;# matched text: match.group()&nbsp;&nbsp;&nbsp;&nbsp;do_something()else:&nbsp;&nbsp;&nbsp;&nbsp;do_anotherthing()4.获取正则表达式所匹配的⼦串(Get the part of a string matched by the regex)regex=ur"" #正则表达式match = re.search(regex, subject)if match:&nbsp;&nbsp;&nbsp;&nbsp;result = match.group()else:&nbsp;&nbsp;&nbsp;&nbsp;result = ""5. 获取捕获组所匹配的⼦串(Get the part of a string matched by a capturing group)regex=ur"" #正则表达式match = re.search(regex, subject)if match:&nbsp;&nbsp;&nbsp;&nbsp;result = match.group(1)else:&nbsp;&nbsp;&nbsp;&nbsp;result = ""6. 获取有名组所匹配的⼦串(Get the part of a string matched by a named group)regex=ur"" #正则表达式match = re.search(regex, subject)if match:result = match.group"groupname")else:result = ""7. 将字符串中所有匹配的⼦串放⼊数组中(Get an array of all regex matches in a string)result = re.findall(regex, subject)8.遍历所有匹配的⼦串(Iterate over all matches in a string)for match in re.finditer(r"<(.*?)\s*.*?/\1>", subject)&nbsp;&nbsp;&nbsp;&nbsp;# match start: match.start()&nbsp;&nbsp;&nbsp;&nbsp;# match end (exclusive): atch.end()&nbsp;&nbsp;&nbsp;&nbsp;# matched text: match.group()9.通过正则表达式字符串创建⼀个正则表达式对象(Create an object to use the same regex for many operations)reobj = pile(regex)10.⽤法1的正则表达式对象版本(use regex object for if/else branch whether (part of) a string can be matched)reobj = pile(regex)if reobj.search(subject):&nbsp;&nbsp;&nbsp;&nbsp;do_something()else:&nbsp;&nbsp;&nbsp;&nbsp;do_anotherthing()11.⽤法2的正则表达式对象版本(use regex object for if/else branch whether a string can be matched entirely)reobj = pile(r"\Z") #正则表达式末尾以\Z 结束if reobj.match(subject):&nbsp;&nbsp;&nbsp;&nbsp;do_something()else:&nbsp;&nbsp;&nbsp;&nbsp;do_anotherthing()12.创建⼀个正则表达式对象,然后通过该对象获得匹配细节(Create an object with details about how the regex object matches (part of) a string)reobj = pile(regex)match = reobj.search(subject)if match:&nbsp;&nbsp;&nbsp;&nbsp;# match start: match.start()&nbsp;&nbsp;&nbsp;&nbsp;# match end (exclusive): atch.end()&nbsp;&nbsp;&nbsp;&nbsp;# matched text: match.group()&nbsp;&nbsp;&nbsp;&nbsp;do_something()else:&nbsp;&nbsp;&nbsp;&nbsp;do_anotherthing()13.⽤正则表达式对象获取匹配⼦串(Use regex object to get the part of a string matched by the regex)reobj = pile(regex)match = reobj.search(subject)if match:&nbsp;&nbsp;&nbsp;&nbsp;result = match.group()else:&nbsp;&nbsp;&nbsp;&nbsp;result = ""14.⽤正则表达式对象获取捕获组所匹配的⼦串(Use regex object to get the part of a string matched by a capturing group)reobj = pile(regex)match = reobj.search(subject)if match:&nbsp;&nbsp;&nbsp;&nbsp;result = match.group(1)else:&nbsp;&nbsp;&nbsp;&nbsp;result = ""15.⽤正则表达式对象获取有名组所匹配的⼦串(Use regex object to get the part of a string matched by a named group)reobj = pile(regex)match = reobj.search(subject)if match:&nbsp;&nbsp;&nbsp;&nbsp;result = match.group("groupname")else:&nbsp;&nbsp;&nbsp;&nbsp;result = ""16.⽤正则表达式对象获取所有匹配⼦串并放⼊数组(Use regex object to get an array of all regex matches in a string)reobj = pile(regex)result = reobj.findall(subject)17.通过正则表达式对象遍历所有匹配⼦串(Use regex object to iterate over all matches in a string)reobj = pile(regex)for match in reobj.finditer(subject):&nbsp;&nbsp;&nbsp;&nbsp;# match start: match.start()&nbsp;&nbsp;&nbsp;&nbsp;# match end (exclusive): match.end()&nbsp;&nbsp;&nbsp;&nbsp;# matched text: match.group()字符串替换1.替换所有匹配的⼦串#⽤newstring替换subject中所有与正则表达式regex匹配的⼦串result = re.sub(regex, newstring, subject)2.替换所有匹配的⼦串(使⽤正则表达式对象)reobj = pile(regex)result = reobj.sub(newstring, subject)字符串拆分1.字符串拆分result = re.split(regex, subject)2.字符串拆分(使⽤正则表⽰式对象)reobj = pile(regex)result = reobj.split(subject)。

java常用正则表达式

java常用正则表达式

java常用正则表达式在Java编程语言中,正则表达式是一种优秀的字符串匹配工具,可以用于搜索、替换和分割字符串。

Java标准库中提供了强大的正则表达式类库,让我们可以轻松地进行复杂的字符串操作。

下面我们将以分步骤的方式介绍Java中常用的正则表达式。

1. 字符组字符组用于匹配一组字符中的任意一个字符。

在正则表达式中,字符组以中括号“[]”表示。

例如,正则表达式“[abc]”可以匹配字符“a”、“b”或“c”。

2. 范围字符组范围字符组用于匹配一组连续的字符。

在正则表达式中,范围字符组以中括号“[]”表示,并在其中用短横线“-”表示范围。

例如,正则表达式“[a-z]”可以匹配任何小写字母;正则表达式“[0-9]”可以匹配任何数字。

3. 非字符组非字符组用于匹配不在一组字符中的任意一个字符。

在正则表达式中,非字符组以中括号“[]”表示,并在其中用排除符号“^”表示非。

例如,正则表达式“[^abc]”可以匹配任何不是字符“a”、“b”或“c”的字符。

4. 点字符点字符用于匹配任意一个字符(除了换行符)。

在正则表达式中,点字符以英文句点“.”表示。

例如,正则表达式“a..b”可以匹配任何以字符“a”开头、以字符“b”结尾、中间有两个任意字符的字符串。

5. 匹配次数匹配次数用于限定一个字符或字符组重复出现的次数。

在正则表达式中,常用的匹配次数包括:- *:匹配0次或多次;- +:匹配1次或多次;- ?:匹配0次或1次;- {n}:匹配n次;- {n,}:匹配至少n次;- {n,m}:匹配n至m次。

例如,正则表达式“ab*c”可以匹配任何以字符“a”开头、以字符“c”结尾、中间有0个或多个字符“b”的字符串。

6. 锚点锚点用于限制匹配的位置。

在正则表达式中,常用的锚点包括:- ^:匹配字符串的开头;- $:匹配字符串的结尾;- \b:匹配单词边界;- \B:匹配非单词边界。

例如,正则表达式“^hello”可以匹配以“hello”开头的字符串。

正则表达式实例

正则表达式实例
1.验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;
2.验证电话号码:("^(\d{3,4}-)\d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;
3.验证手机号码:"^1[3|4|5|7|8][0-9]{9}$";
34.匹配中国邮政编码:[1-9]\\d{5}(?!\d)
评注:中国邮政编码为6位数字
35.匹配ip地址:([1-9]{1,3}\.){3}[1-9]。
评注:提取ip地址时有用
36.匹配MAC地址:([A-Fa-f0-9]{2}\:){5}[A-Fa-f0-9]
Function IsRegu(Regu,s)
7.整数或者小数:^[0-9]+([.][0-9]+){0,1}$
8.只能输入数字:"^[0-9]*$"。
9.只能输入n位的数字:"^\d{n}$"。
10.只能输入至少n位的数字:"^\d{n,}$"。
11.只能输入m~n位的数字:"^\d{m,n}$"。
12.只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
27.匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
28.匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行
29.匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? />

正则表达式PPT示例讲解

正则表达式PPT示例讲解

自动化脚本
自动化测试
在软件测试中,可以使用正则表达式 来验证程序的输出是否符合预期。
自动化生成
通过正则表达式可以生成符合特定规 则的文本,例如生成随机用户名或密 码。
06
正则表达式的工具与资源
正则表达式在线测试工具
正则表达式在线测试工具是一种方便快捷的工具,用于测试 和验证正则表达式的正确性。通过在线测试工具,用户可以 输入正则表达式和测试字符串,查看匹配结果和匹配过程, 从而更好地理解正则表达式的应用。
它由一系列字符、元 字符和限定符组成, 用于描述字符串的模 式。
正则表达式的用途
文本搜索
数据验证
在大量文本中快速查找 符合特定模式的字符串。
验证输入的数据是否符 合特定的格式或规则。
数据提取
从文本中提取符合特定 模式的字符串。
自动化脚本
用于自动化处理文本数 据,如日志分析、网页
爬虫等。
正则表达式的历史与发展
贪婪匹配
默认匹配尽可能多的字符,如`a*` 会匹配所有`a`字符。
懒惰匹配
尽可能匹配最少的字符,如`a*?` 会匹配一个或没有`a`字符。
03
正则表达式进阶
锚点
^
匹配字符串的开头。
b
匹配单词边界,即 单词与空格之间的 位置。
锚点
用于指定匹配字符 串的起始位置或结 束位置。
$
匹配字符串的结尾。
B
匹配非单词边界的 位置。
预查
01
02
03
Hale Waihona Puke 04预查用于在匹配之前检查字符串中 是否存在特定模式。
(?=...)
正向预查,检查是否存在指定 模式,但不消耗字符。

正则表达式经典案例

正则表达式经典案例

正则表达式经典案例正则表达式是一种强大的文本匹配工具,可以用来匹配、查找、替换文本中的特定模式。

在实际应用中,正则表达式经常被用来处理各种文本数据,例如日志文件、网页源代码、邮件等等。

下面列举了一些正则表达式经典案例,供大家参考。

1. 匹配邮箱地址邮箱地址是一种常见的文本格式,通常由用户名、@符号和域名组成。

使用正则表达式可以方便地匹配出符合要求的邮箱地址。

例如,下面的正则表达式可以匹配出常见的邮箱地址:```^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$```这个正则表达式的含义是:以字母、数字、下划线、点、加号、减号、百分号为开头,后面跟着一个@符号,然后是一个或多个字母、数字、点、减号,最后是一个点和两个或多个字母。

2. 匹配IP地址IP地址是网络通信中的重要概念,使用正则表达式可以方便地匹配出符合要求的IP地址。

例如,下面的正则表达式可以匹配出IPv4地址:```^((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]?)$```这个正则表达式的含义是:以一个数字为开头,后面跟着一个点和三个数字,重复三次,最后以一个数字结尾。

其中,25[0-5]表示250到255之间的数字,2[0-4][0-9]表示200到249之间的数字,[01]?[0-9][0-9]?表示0到199之间的数字。

3. 匹配URL地址URL地址是网页中的重要元素,使用正则表达式可以方便地匹配出符合要求的URL地址。

例如,下面的正则表达式可以匹配出常见的URL地址:```^(https?|ftp)://[^\s/$.?#].[^\s]*$```这个正则表达式的含义是:以http、https或ftp为开头,后面跟着一个冒号和两个斜杠,然后是一个或多个非空白字符,接着是一个点和零个或多个非空白字符。

正则表达式零宽断言详解

正则表达式零宽断言详解

正则表达式零宽断⾔详解正则表达式零宽断⾔:零宽断⾔是正则表达式中的难点,所以本章节重点从匹配原理⽅⾯进⾏⼀下分析。

零宽断⾔还有其他的名称,例如"环视"或者"预搜索"等等,不过这些都不是我们关注的重点。

⼀.基本概念:零宽断⾔正如它的名字⼀样,是⼀种零宽度的匹配,它匹配到的内容不会保存到匹配结果中去,最终匹配结果只是⼀个位置⽽已。

作⽤是给指定位置添加⼀个限定条件,⽤来规定此位置之前或者之后的字符必须满⾜限定条件才能使正则中的字表达式匹配成功。

注意:这⾥所说的⼦表达式并⾮只有⽤⼩括号括起来的表达式,⽽是正则表达式中的任意匹配单元。

javascript只⽀持零宽先⾏断⾔,⽽零宽先⾏断⾔⼜可以分为正向零宽先⾏断⾔,和负向零宽先⾏断⾔。

代码实例如下:实例代码⼀:var str="abZW863";var reg=/ab(?=[A-Z])/;console.log(str.match(reg));在以上代码中,正则表达式的语义是:匹配后⾯跟随任意⼀个⼤写字母的字符串"ab"。

最终匹配结果是"ab",因为零宽断⾔"(?= [A-Z])"并不匹配任何字符,只是⽤来规定当前位置的后⾯必须是⼀个⼤写字母。

实例代码⼆:var str="abZW863";var reg=/ab(?![A-Z])/;console.log(str.match(reg));以上代码中,正则表达式的语义是:匹配后⾯不跟随任意⼀个⼤写字母的字符串"ab"。

正则表达式没能匹配任何字符,因为在字符串中,ab的后⾯跟随有⼤写字母。

⼆.匹配原理:上⾯代码只是⽤概念的⽅式介绍了零宽断⾔是如何匹配的。

下⾯就以匹配原理的⽅式分别介绍⼀下正向零宽断⾔和负向零宽断⾔是如何匹配的。

1.正向零宽断⾔:代码实例如下:var str="<div>antzone";var reg=/^(?=<)<[^>]+>\w+/;console.log(str.match(reg));匹配过程如下:⾸先由正则表达式中的"^"获取控制权,⾸先由位置0开始进⾏匹配,它匹配开始位置0,匹配成功,然后控制权转交给"(?= <)",,由于"^"是零宽的,所以"(?=<)"也是从位置0处开始匹配,它要求所在的位置右侧必须是字符"<",位置0的右侧恰好是字符"<",匹配成功,然后控制权转交个"<",由于"(?=<)"也是零宽的,所以它也是从位置0处开始匹配,于是匹配成功,后⾯的匹配过程就不介绍了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式: \n[\s| ]*\r
匹配HTML标记的正则表达式: /<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式: (^\s*)|(\s*$)
匹配Email地址的正则表达式: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
用正则表达式限制只能输入全角字符:
onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字和英文:
onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址
用正则表达式限制只能输入数字:
onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数
^((-\d+(\.\d+)?)|(0+(\.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+)?$ //匹配浮点数
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0)
^-[0-9]*[1-9][0-9]*$ //匹配负整数
^-?\d+$ //匹配整数
^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0)
匹配网址URL的正则表达式: http://([\w-]+\.)+[\w-]+(/[\w- .整数(正整数 + 0)
^[0-9]*[1-9][0-9]*$ //匹配正整数
^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url
利用正则表达式限制网页表单里的文本框输入内容:
用正则表达式限制只能输入中文:
onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
相关文档
最新文档