Regular expression (common to all languages)

Regex modifier

Regular expressions are a necessary knowledge point for programmers. Whether it is data processing or front-end form validation, it is very easy to use. It is very necessary to master regular expressions. Here is an introduction to regular expressions. Usage and some tips.
Regex modifier

i Perform case-insensitive matching.

g Perform a global match (find all matches instead of stopping after the first match is found).

m Perform multi-line matching.

Regular expression pattern
Brackets are used to find a certain range of strings:

[abc] Find any characters between square brackets.

[0-9] Find any number from 0 to 9.

(x|y) finds any option separated by |.

Metacharacter is a character with special meaning:

\d Find the number.

\s Find blank characters.

\b matches word boundaries.

\uxxxx Find the Unicode character specified by the hexadecimal number xxxx.

Quantifiers define quantifiers:

n+ matches any string containing at least one n.

n* matches any string that contains zero or more n.

n? matches any string containing zero or one n.

// The use of regular expressions in js

	// 1.利用RegExp对象来创建
	var Regexp=RegExp=(/123/);
	// 2.利用字面量进行创建表达式
			
	var rg=/123/;
	// 利用test测试我们写的正则表达式是否符合要求,符合返回true,不符合返回flase
	// regexobj.test(str)
	// regexobj 我们自己写的正则表达式 str我们需要测试的文本  
	// 边界符
	// 1. ^ 表示匹配首行文本以谁开始
	// 2. $ 表示匹配首行文本以谁结束
	// 正则表达式里面不需要加引号,不管是字符串还是数字
			
	//var rg=/abc/;只要包含有adc返回都是true
			
//var rg=/^abc/;只能是adc开始返回是true
			
	//var rg=/^abc$/;只能是adc返回都是true
			
	//var rg=/abc$/;只能是adc结尾返回都是true
			
	// 字符类:[]表示有一系列字符可以选择,只要匹配其中一个就可以了
	// var rg=/[abc]/;只要包含a或b或c返回的都是true
			
	// var rg=/^[abc]/;只能是a或者b或者c 三选一 才返回的true
			
	// var rg=/[a-z]/;只要是a到z范围返回的都是true
			
	// var rg=/[0-9]/;只要是0到9范围返回的都是true
			
	// var rg=/[A-Z]/;只要是A到Z范围返回的都是true
			

				字符组合

	var rg=/[a-zA-Z0-9-_]/;只要是数字,大小写字母(-_)范围返回的都是true
			
	// var rg=/[^a-zA-Z0-9-_]/;只要不是数字,大小写字母(-_)范围返回的都是true
	// 中括号里有^表示取反
	// 量次符
	// var reg=/^a*$/; a可以出现0次或者多次都是可以的
			 
	// var reg=/^a+$/; a出现大于等于1次才可以
			 
	// var reg=/^a?$/; a只能出现一次或者0次
			  
	// 量词之间不能有空格
	// var reg=/^a{
    
    3}$/; a只有重复3次才符合要求
			  		  
	 // var reg=/^a{
    
    3,}$/; a只有大于等于3次才符合要求
			   
	// var reg=/^a{
    
    3,6}$/; a只有大于等于3次并且小于等于6之间才符合要求

			  
		RegExp 对象属性

Whether the global RegExp object has the flag g.

Whether the ignoreCase RegExp object has the flag i.

lastIndex is an integer that marks the character position at which to start the next match.

Whether the multiline RegExp object has the flag m.

source The source text of the regular expression.

RegExp object methods

compile Compile regular expressions.

exec retrieves the value specified in the string. Return the found value and determine its location.

test retrieves the value specified in the string. Returns true or false.

Methods of String objects that support regular expressions

search Retrieve the value that matches the regular expression.

match finds one or more regular expression matches.

replace replaces the substring that matches the regular expression.

split splits the string into an array of strings.

	一、校验数字的表达式
 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. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
 9. 有两位小数的正实数:^[0-9]+(.[0-9]{
    
    2})?$
 10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{
    
    1,3})?$
 11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){
    
    1,3}$ 或 ^\+?[1-9][0-9]*$
 12. 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
 13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$
 14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
 15. 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
 16. 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
 17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
 18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
 19. 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
 
 
二、校验字符的表达式
 1. 汉字:^[\u4e00-\u9fa5]{0,}$
 2. 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
 3. 长度为3-20的所有字符:^.{3,20}$
 4. 由26个英文字母组成的字符串:^[A-Za-z]+$
 5. 由26个大写英文字母组成的字符串:^[A-Z]+$
 6. 由26个小写英文字母组成的字符串:^[a-z]+$
 7. 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
 8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
 9. 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
 10. 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
 11. 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+12 禁止输入含有~的字符:[^~\x22]+
 
 

三、特殊需求表达式
 1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
 2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
 3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
 4. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
 5. 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{
    
    3,4}-)|\d{
    
    3.4}-)?\d{
    
    7,8}$
 6. 国内电话号码(0511-4405222、021-87888822):\d{
    
    3}-\d{
    
    8}|\d{
    
    4}-\d{
    
    7}
 7. 身份证号(15位、18位数字):^\d{
    
    15}|\d{
    
    18}$
 8. 短身份证号码(数字、字母x结尾):^([0-9]){
    
    7,18}(x|X)?$ 或 ^\d{
    
    8,18}|[0-9x]{
    
    8,18}|[0-9X]{
    
    8,18}?$
 9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{
    
    4,15}$
 10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{
    
    5,17}$
 11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{
    
    8,10}$?
 12. 日期格式:^\d{
    
    4}-\d{
    
    1,2}-\d{
    
    1,2}
 13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
 14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
 15. 钱的输入格式:
  1) 有四种钱的表示形式我们可以接受:"10000.00"?和?"10,000.00", 和没有?"分"?的?"10000"?和?"10,000":^[1-9][0-9]*$
  2) 这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$
  3) 一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$
  4) 这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$
  5) 必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是?"10"?和?"10.2"?是通过的:^[0-9]+(.[0-9]{
    
    2})?$
  6) 这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{
    
    1,2})?$
  7) 这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{
    
    1,3}(,[0-9]{
    
    3})*(.[0-9]{
    
    1,2})?$
  8) 1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{
    
    1,3}(,[0-9]{
    
    3})*)(.[0-9]{
    
    1,2})?$
   备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
 16. xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
 17. 中文字符的正则表达式:[\u4e00-\u9fa5]
 18. 双字节字符:[^\x00-\xff]??? (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
 19. 空白行的正则表达式:\n\s*\r??? (可以用来删除空白行)
 20. HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />??? (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
 21. 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$)??? (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
 22. 腾讯QQ号:[1-9][0-9]{
    
    4,}??? (腾讯QQ号从10000开始)
 23. 中国邮政编码:[1-9]\d{
    
    5}(?!\d)??? (中国邮政编码为6位数字)
 24. IP地址:\d+\.\d+\.\d+\.\d+??? (提取IP地址时有用)
 25. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){
    
    3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)

Guess you like

Origin blog.csdn.net/m0_46188681/article/details/106266862