正则

es6基础(3)-正则扩展

天涯浪子 提交于 2019-11-26 23:36:41
1 //正则扩展 2 { 3 let regex=new RegExp('xyz','i'); 4 let regex2=new RegExp(/xyz/i); 5 6 console.log(regex.test('xyz123'),regex2.test('xy')); 7 //后面的修饰符i覆盖原来的ig修饰符 8 let regex3=new RegExp(/xyz/ig,'i'); 9 console.log(regex3.flags); 10 } 11 12 { 13 let s='bbb_bb_b'; 14 //g,y都是全局匹配 15 let a1=/b+/g; 16 let a2=/b+/y; 17 console.log('one:',a1.exec(s),a2.exec(s));//第一次都是从头开始匹配,bbb 18 console.log('two:',a1.exec(s),a2.exec(s));//第二次,g会忽略_直接bb,y不会忽略,所以匹配不到 19 //sticky查看是否开启了y修饰符 20 console.log(a1.sticky,a2.sticky); 21 } 22 23 //ES6 对正则表达式添加了 u 修饰符,含义为 "Unicode模式",用来正确处理大于 \uFFFF 的Unicode字符。也就是说,会正确处理四个字符的

Java基础之正则表达式

前提是你 提交于 2019-11-26 23:36:00
所有的正则使用的标记都在java.util.regex.Pattern类中定义   1、单个字符:(数量:1)     字符:表示由一位字符组成   \\:表示转义字符 \   \t:表示一个 t 符号   \n:表示换行 2、字符集:(数量:1)     [abc]:表示是字符 a、字符 b、字符 c中的任意一个   [^abc]:表示不是字符 a、字符 b、字符 c中的任意一个   [a-z]:表示所有的小写字母   [a-zA-Z]:表示任意一位字母,不区分大小写   [0-9]:表示任意一位数字 3、简化的字符集表达式:(数量:1)    . :表示任意的一位字符   \d:等价于[0-9],表示任意一位数字,属于简化写法   \D:等价于[^0-9],表示不是任意一位数字,属于简化写法   \s:表示任意的空白字符,例如:“\t”,“\n”   \S:表示任意的非空白字符   \w:等价于[a-zA-Z_0-9],表示由任意的字母数字下下划线组成   \W:等价于[^a-zA-Z_0-9],表示不是由任意的字母数字下下划线组成 4、边界匹配:(不在Java中使用,在JavaScript中使用)   ^:正则的开始   $:正则的结束 5、数量表达式   正则?:表示此正则出现0次或者一次   正则+:表示此正则出现一次以上   正则*:表示此正则出现0次或者多次   正则

正则

时光总嘲笑我的痴心妄想 提交于 2019-11-26 22:30:15
/*英文,数字,下划线,横线*/ var imageName = (rule, value, callback) => { const reg = /^[A-Za-z0-9-\_]+$/; if (reg.test(value)) { callback(); } else { return callback(new Error('请输入英文,数字,下划线,横线')); } }; /*中文,英文,数字,下划线,横线*/ var imageName = (rule, value, callback) => { const reg = /^[\u4e00-\u9fa5A-Za-z0-9-\_]+$/; if (reg.test(value)) { callback(); } else { return callback(new Error('请输入中文,英文,数字,下划线,横线')); } }; 来源: oschina 链接: https://my.oschina.net/u/3774949/blog/3133850

正则断言详解

风流意气都作罢 提交于 2019-11-26 19:32:33
正则断言的使用 零宽断言 匹配宽度为零,满足一定的条件/断言。 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。 断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配 零宽断言又分四种 先行断言(零宽度正预测先行断言) 表达式:(?=表达式) 表示匹配表达式前面的位置 先行断言的执行步骤是这样的先从要匹配的字符串中的最右端找到第一个ing(也就是先行断言中的表达式)然后 再匹配其前面的表达式,若无法匹配则继续查找第二个ing 再匹配第二个 ing前面的字符串,若能匹配 则匹配 .*(?=d) 可c以匹配abcdefghi 中的abc 后发断言(零宽度正回顾后发断言) 表达式: (?<=表达式) 表示匹配表达式后面的位置 后发断言跟先行断言恰恰相反 它的执行步骤是这样的:先从要匹配的字符串中的最左端找到第一个abc(也就是先行断言中的表达式)然后 再匹配其后面的表达式,若无法匹配则继续查找第二个abc 再匹配第二个abc后面的字符串,若能匹配 则匹配 例如(?<=abc).* 可以匹配abcdefg中的defg 负向断言 负向零宽先行断言 :(?!表达式) 负向零宽后发断言:(?<!表达式) 负向零宽断言 (?!表达式)

一个JS正则的字符串替换函数

寵の児 提交于 2019-11-26 19:23:35
直接上函数吧 不废话 function replacestring(oldstr,newstr,text) { var exp = new RegExp(oldstr,'g'); var c=text.replace(exp,newstr); return c; } var oldstr='world'; var newstr='cccc'; var text='Hello world, Hello world'; var aa= replacestring(oldstr,newstr,text); console.log(aa); 来源: https://www.cnblogs.com/baker95935/p/11330879.html

正则速查

情到浓时终转凉″ 提交于 2019-11-26 18:37:21
常用元字符: .      匹配除换行符以外的任意字符 \w    匹配字母或数字或下划线或汉字 \s    匹配任意的空白符 \d     匹配数字 \b     匹配单词的开始或结束 ^      匹配字符串的开始 $      匹配字符串的结束 \a     报警字符 \b     通常是单词分界位置,但如果在字符类里使用代表退格 \t     制表符,Tab \r     回车 \v     竖向制表符 \f     换页符 \n     换行符 \e     Escape \0nn    ASCII代码中八进制代码为nn的字符 \xnn    ASCII代码中十六进制代码为nn的字符 \unnnn   Unicode代码中十六进制代码为nnnn的字符 \cN     ASCII控制字符。比如\cC代表Ctrl+C \A     字符串开头(类似^ ,但不受处理多行选项的影响) \Z     字符串结尾或行尾(不受处理多行选项的影响) \z     字符串结尾(类似$,但不受处理多行选项的影响) 常用量词: *   重复零次或更多次 +   重复一次或更多次 ?   重复零次或一次 {n}    重复n次 {n,}   重复n次或更多次 {n,m}  重复n到m次 常用反义词: \W     匹配任意不是字母,数字,下划线,汉字的字符 \S     匹配任意不是空白符的字符

C 正则库 Demo (regex, pcre)

天大地大妈咪最大 提交于 2019-11-26 18:34:59
例子为匹配ip地址 pcre库(perl正则) /* * gcc pcre.c -o pcrec -lpcre */ #include <stdlib.h> #include <stdio.h> #include < string .h> #include <pcre/pcre.h> int is_match ( const char *src, const char * pattern) { pcre * re; const char * error; int erroffset; int result; re = pcre_compile (pattern, /* the pattern */ 0 , /* default options */ &error, /* for error message */ &erroffset, /* for error offset */ NULL); /* use default character tables */ /* Compilation failed: print the error message and exit */ if (re == NULL) { printf ( " PCRE compilation failed at offset %d: %s\n " , erroffset, error); return -

常用15个校验正则表达式

亡梦爱人 提交于 2019-11-26 18:01:24
收集整理了15个常用的javaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Email)、手机号码、身份证号、URL地址、 IPv4地址、 十六进制颜色、 日期、 QQ号码、 微信号、车牌号、中文正则。表单验证处理必备。 1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //输出 true console.log(uPattern.test("iFat3")); 2 密码强度正则 //密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/; //输出 true console.log("=="+pPattern.test("iFat3#")); 3 整数正则 //正整数正则 var posPattern = /^\d+$/; //负整数正则 var negPattern = /^-\d+$/; //整数正则 var intPattern = /^-?\d+$/; //输出 true console.log(posPattern.test("42")); //输出

正则零宽断言 Regex.Replace(string,string,string)

折月煮酒 提交于 2019-11-26 17:26:55
一直对Regex.Replace(string,string,string)这个没仔细了解 今天终于明白了 Regex.Replace(string input,string pattern,string replacement) (1) input: http://www.xxx.com/news/5/ pattern:.*?xxx\.com/news/\d+/ replacement:news.aspx 结果news.aspx 因为input按照pattern匹配的结果为 http://www.xxx.com/news/5/ ,然后我们用news.aspx替换 最终结果就是news.aspx (2) input: abcedft http://www.xxx.com/news/5/6/7YYYYY pattern: http://(.*/?)\.*xxx.com/news/(\d+/)*(\d+)/ * replacement: /news.aspx 结果为 abcedft/news.aspxYYYYY 因为input 中匹配的为 http://www.xxx.com/news/5/6/7 (3) input:http://www.xxx.com/news/5/ pattern:http://(.*?)\.xxx.com/news/(\d+)/ replacement:news

正则零宽断言 Regex.Replace(string,string,string)

烈酒焚心 提交于 2019-11-26 17:26:45
一直对Regex.Replace(string,string,string)这个没仔细了解 今天终于明白了 Regex.Replace(string input,string pattern,string replacement) (1) input: http://www.xxx.com/news/5/ pattern:.*?xxx\.com/news/\d+/ replacement:news.aspx 结果news.aspx 因为input按照pattern匹配的结果为 http://www.xxx.com/news/5/ ,然后我们用news.aspx替换 最终结果就是news.aspx (2) input: abcedft http://www.xxx.com/news/5/6/7YYYYY pattern: http://(.*/?)\.*xxx.com/news/(\d+/)*(\d+)/ * replacement: /news.aspx 结果为 abcedft/news.aspxYYYYY 因为input 中匹配的为 http://www.xxx.com/news/5/6/7 (3) input:http://www.xxx.com/news/5/ pattern:http://(.*?)\.xxx.com/news/(\d+)/ replacement:news