时间:2021-05-26
本文实例讲述了JavaScript 正则应用。分享给大家供大家参考,具体如下:
正则表达式在web开发中的常用
邮箱验证
用户名验证
替换字符串某一部分
信息采集,用来分析有效代码段
...
有规律的字符串描述
正则表达式是一门独立的知识,同样的一段描述,比如,对于email的匹配表达式,在不同的语言是一样的,但是调用的函数不同。
正则表达式--规则表达式
正则表达式:正则表达式
正则表达式语法:正则表达式语法
正则表达式语言:正则表达式语言
准备性的工作
在js中,如何写正则表达式。 /RegExp/
在js里,用正则表达式来验证字符串是否满足, 使用 reg.test(str);
用正则表达式的exec函数,用来查找匹配的选项,并把查找的值取出。
reg.test(str); 返回true 或者false 。 常在表单验证中使用。
<from action="xxx.php" id="biaodan"> <p>请输入姓名:<input type="text" id="name" /></p> <p>请输入年龄:<input type="text" id="age" /></p> <p><input type="submit" /></p></from> <script> var oBD = document.getElementById('biaodan'); var oName = document.getElementById('name'); var oAge = document.getElementById('age');//表单试图提交的时候,触发onsubmit事件//这个函数返回了false,表单不会被提交 oBD.onclick = function(){ //验证name if( !/^[\u4e00-\u9fa5]{2,4}$/.test(oName.value) ) return false; //验证年龄 if( !/^\d{2,3}$/.test(oAge.value) ) return false; if( parseInt( oAge.value )<10 || parseInt( oAge.value )>104 ) alert('您输入的年龄不在范围') return false; return true; }</script>exec(); 返回 数组 或 null。
exec是英语execute的意思,CEO首席执行官,E就是executive执行的
“执行” 把正则式放到字符串上执行
每次执行结果按序输出,不管结果有几个,一次只输出一个 ,如果多次输出,会保持前面的引用。当匹配超过原字符串的时候,会返回null。然后遇到null,指针返回到匹配的字符的第一位。 具有迭代器的感觉。
使用exec() 找最大子串
var str = 'AAABBBCCCCCCC';var reg = /(\w)\1+/g;var maxLength = 0;var maxLetter = '';var a;while( a=reg.exec(str) ){ if( a[0].length>maxLength ){ maxLength = a[0].length; maxLetter = a[0]; }}console.log( maxLetter );var str='BCDEFG1234567abcdefg';var reg = /[a-z]/g;var a;while( (a=reg.exec(str)) != null ){ //先赋值给a,然后再与后边判断。 console.log( a );}str.match( reg ); //查找,匹配到,返回数组
str.split( reg ); //拆分,返回数组
str.serch( reg ); //查找位置
str.replace( reg,'new str'); //正则替换,返回string
要找什么字符?
从哪儿找?
找几个?
字面值, ‘hi' ,就是找‘hi'。
用字符的集合来表示 , [abcd], 指匹配abcd中任意一个
//找不吉利的数字//3,4,7var reg = /[3,4,7]/; //字符集合, 不能使用 /347/ 字面值表示,是表示整体。 console.log( reg.test('12121212') );//falseconsole.log( reg.test('12341234') ); //true用范围表示字符 , [0-9] [0123456789] [a-z] [A-Z]
// var reg = /[0123456789]/;var reg = /[0-9]/;console.log( reg.test('123afsdf') ); //trueconsole.log( reg.test('asdf') ); //false//是否有大写字母var reg = /[A-Z]/;console.log( reg.test('asdf') );//falseconsole.log( reg.test('Tomorrow is another day') ); //true字符簇, 花团锦簇-> 一坨字符。
系统为常用的字符集合,创建的简写.
例如:
[0-9] --> \d
[0-9a-zA-Z_] --> \w .. 域名,注册用户名常用的模式.
[\t\v\f\r\n] --> \s 空白符.
补集的形式来表示字符集合 在集合前面使用表示补集。
[0-9]---> [^0-9] ^ 脱字符号: 念法: caret。['kærət] 。
[abcdef]-->[^abcdef]
//验证全为数字
var reg = /^[0-9]/; //匹配非数字
// var reg = /^d/ //字符簇补集
console.log( reg.test('aaaaa') );//非数字存在 false
console.log( reg.test('123aaa') ); //有数字存在 true
字符簇的补集:
d -- > D(非数字)
s --> S(非空白字符)
w --> W
任意字符 : . 唯独不包括换行符
b 单词边界
/bhi/ --> 从单词的边界开始匹配hi。
// 匹配单词hi,包括hi本身// var reg = /\bhi.+/;//错误// var reg = /\bhi\w+/; //错误。 + --> 至少有 一个var reg = /\bhi\w*/; console.log( reg.exec('this is') ); //nullconsole.log( reg.exec('his') ); //["his", index: 0, input: "his"]console.log( reg.exec('history') ); //["history", index: 0, input: "history,hi"]B 单词的非边界
// 把单词中间的某一个部分取出来。 // 把中间含有hi的单词取出,即hi不能在两端。var reg = /\Bhi\B/;console.log( reg.exec('this') ); //["hi", index: 1, input: "this"]console.log( reg.exec('hi') ); //null^ creat , 从字符串的起始位置开始匹配
$ 匹配到字符串的结束位置
从字符串的开头到结尾开始匹配,模拟运行顺序.
var reg = /^lishi$/; console.log( reg.exec('lishinihao') ); nullconsole.log( reg.exec('lishi') ); //["lisi", index: 0, input: "lisi"]*, [0,n] --> {0, }
+ , [1,n] -->{1, }
? , [0,1] -->{0,1}
n {n} {3} a{n} , 字符a准确的出现n次
a{n,} 字符a,至少出现n次。
a{n,m} 字符串a,出现n到m次。
以匹配为例,默认情况下,找到一次结果符合就结束。
告知匹配过程,一直找,在全文范围内一直找。
g -> 全局模式, global 找所有的,而不是找一次就结束
i -> 忽略大小写,ignore
确定边界是什么,那些东西必须有,那些东西可能有可能没有。配合+,*
//把链接换成 #//<a href="http://" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >阴天快乐</a>"] */ console.log( str.replace(reg,'<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >$1</a>') ); //<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >阴天快乐</a> var str = '<html></html>'; var reg = /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/; console.log( reg.exec(str) ); str.replace(reg,function( $1,$2 ){ console.dirxml($2); //html });如何引用子表达式所匹配的结果?
在正则外边使用:$N 来匹配 第N个子表达式的匹配结果。
在正则里边使用N来 使用第N个子表达式。
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript正则表达式技巧大全》、《JavaScript替换操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
了解正向预查&反向预查前,我们先要知道正则的2个函数:preg_match_all、preg_replace正向预查&反向预查正向或反向预查都是非获取匹配,不进
javascript正则表达式分组、断言详解提示:阅读本文需要有一定的正则表达式基础。正则表达式中的断言,作为高级应用出现,倒不是因为它有多难,而是概念比较抽象
本文实例讲述了JavaScript引用类型RegExp基本用法。分享给大家供大家参考,具体如下:1、正则表达式定义三个标志:全局模式g,不区分大小写模式i,多行
JavaScript中的正则表达式解析正则表达式(regularexpression)对象包含一个正则表达式模式(pattern)。它具有用正则表达式模式去匹配
关于websocket等反向ajax技术介绍在实时web应用中,常见的方法是反向Ajax。反向Ajax的定义:反向Ajax(ReverseAjax)本质上则是这