JavaScript 正则表达式,用于规定在文本中检索的内容。
一、定义正则表达式:
rep = /\d+/; // js定义正则。(python定义正则:re模块 rep = "\d+") // 注:定义正则表达式也可以 reg= new RegExp()
- /…/ 用于定义正则表达式
- /…/g 表示全局匹配
- /…/i 表示不区分大小写
- /…/m 表示多行匹配
JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容。
> var text = "JavaScript is more fun than \nJavaEE or JavaBeans!"; "JavaScript is more fun than \ JavaEE or JavaBeans!" > var pattern1 = /Java\w*/g; // 无^、$,默认就是多行 > var pattern2 = /^Java\w*/g; // 有^、$,只匹配一行 > var pattern = /^Java\w*/gm; // 有^、$,多行匹配 > result = pattern.exec(text) ["JavaScript"] > result = pattern.exec(text) ["JavaEE"]
二、正则对象的方法
有 3 个方法:test()、exec() 以及 compile()。
1、test()
test() 方法检索字符串中的指定值。返回值是 true 或 false。
> rep = /\d+/; > rep.test("name89age") // 默认:只要内部包含就返回true true > rep = /^\d+$/; // ^开始符号,$结束符号 > rep.test("name89fgf") false
2、exec()
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
- 非全局模式
> var text = "JavaScript is more fun than Java or JavaBeans!"; > var pattern = /\bJava\w*\b/; // 默认只拿第一个 > result = pattern.exec(text) ["JavaScript"] > var pattern = /\b(Java)\w*\b/; // () 分组匹配 > result = pattern.exec(text) ["JavaScript", "Java"] // 注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
- 全局模式
需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null
表示获取完毕
var pattern = /\bJava\w*\b/g; // 加g,反复执行exec,一个一个匹配结果 var text = "JavaScript is more fun than Java or JavaBeans!"; result = pattern.exec(text) //每执行一次仅返回一个结果,不断next,直至null var pattern = /\b(Java)\w*\b/g; // 分组匹配(匹配结果再匹配) var text = "JavaScript is more fun than Java or JavaBeans!"; result = pattern.exec(text)
3、compile()
compile() 方法用于改变 正则表达式对象。
compile() 既可以改变检索模式,也可以添加或删除第二个参数。
例子:
patt1 = new RegExp("e"); patt1.test("The best things in life are free"); patt1.compile("d"); patt1.test("The best things in life are free");
由于字符串中存在 “e”,而没有 “d”,以上代码的输出是:
true false
三、表单验证-示例
1、知识点回顾
- Dom和jQuery方式绑定事件,获取函数返回值
<body> <!--Dom方式:onclick里需要加return--> <a onclick="return ClickOn()" href="http://blog.csdn.net/fgf00">走你1</a>
<!--jQuery方式:--> <a id="i1" href="http://blog.csdn.net/fgf00">走你2</a> <script src="jquery-1.12.4.js"></script> <script> // Dom方式: function ClickOn() { alert(123); return true; // true:执行后面操作,dom绑定里需要加return } // jQuery方式: $('#i1').click(function () { alert(456); return false; // false:不执行后面操作 }) </script> </body>
- 事件优先级
比如a标签等一些标签,默认就有绑定事件,再给添加一个自定义事件,哪个先执行?
# 默认事件先执行: checkbox(复选框) # 自定义事件先执行 a submit ...
2、表单验证
为了防止用户点一次,就往数据库发送一次连接请求,对于一些简单的比如文本格式、长度等,在浏览器上给拦截了,是不是就可以了。
对一部分检测的功能,放到前端上面做,用js实现。但是要知道,浏览器上的js是可以被禁用的。
一般情况下,对于用户的验证,前端写一套基本验证、后端也写一套完全验证,针对所有用户。
一般情况下,对于用户的验证,前端写一套基本验证、后端也写一套完全验证,针对所有用户。
本站仅用于个人学习的笔记和记录,有时候是阅读别人的文章的时候做着笔记整理,有些是在实际工作中遇到的问题以及解决小问题的记录。
当前仅用于作为一个萌新程序媛的查漏补缺地检索地。