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是可以被禁用的。

一般情况下,对于用户的验证,前端写一套基本验证、后端也写一套完全验证,针对所有用户。

一般情况下,对于用户的验证,前端写一套基本验证、后端也写一套完全验证,针对所有用户。

表单认证代码示例地址

最新文章

  1. vs安装后当切换到图形设计界面的时候自动弹出“正在准备安装的提升”,然后程序处于假死状态
  2. HYSBZ 2440 完全平方数(莫比乌斯反演)
  3. Python的平凡之路(1)
  4. mysql 使用说明-2
  5. Windows phone 8 学习笔记(6) 多任务(转)
  6. asp.net repeater控件操作
  7. VirtualBox详细教程
  8. Windows内核
  9. Centos下mongodb的安装与配置
  10. AWS-SS配置过程
  11. Nginx+Https自己敲命令生成证书
  12. LeetCode-7-反转整数-c# 版本
  13. [leetcode]8. String to Integer (atoi)字符串转整数
  14. HDU 5521.Meeting 最短路模板题
  15. Kafka工作原理解析以及主要配置详解
  16. html----不常见标签
  17. Unsafe 学习和源码阅读
  18. [Object Tracking] Contour Detection through OpenCV
  19. java.lang.IllegalStateException: Ambiguous mapping. Cannot map &#39;waterQuality
  20. Python - requests https请求的坑

热门文章

  1. stm32:#ifndef/#define/#endif使用
  2. js 调用铃声
  3. 基于Websocket开发的仿微信聊天室
  4. C++动态内存new和delete(超详细)
  5. php--phpstorm使用正则匹配批量替换
  6. layui经典模块化前端UI框架初识
  7. 给listview添加长时间点击事件(完成删除操作)
  8. Mac 系统root
  9. linux升级python2.7到3.7.0
  10. html字体大小与颜色设置