JavaScript正则使用点滴

简介: 写在前面:关于“railroad diagrams”,摘抄自网络:http://202.207.0.245:9001/jisuanjifazhanshi/tuling/19.htm     我们目前所看到的许多语言的BNF实际上是EBNF,不过人们往往忽略掉这个E字。

写在前面:关于“railroad diagrams”,摘抄自网络:http://202.207.0.245:9001/jisuanjifazhanshi/tuling/19.htm

    我们目前所看到的许多语言的BNF实际上是EBNF,不过人们往往忽略掉这个E字。和BNF一起出现的,还常常有一些看上去像铁路图那样的图形,称作“语法图”(syntax chart或syntax diagram)或“铁路图”(railroad diagram),这也是由沃思所设计与发明的,这种图形标记法的描述能力等价于BNF,但当然更易于阅读与理解,更加直观。

p.s:可惜源地址的图不全,,不然……

正则复杂起来可能会感觉有点繁复(slightly less terse),但正确性会提高(slightly easier to use correctly)。
JS的正则不支持空白符,所以不支持注释。《Good Parts》理由竟然是安全理由:

This is a particular concern when the are used in security applications for scanning and validation.

但一方面书中又提出:

If you cannot read and understand a regular expression, how can you have confidence that it will work correctly for all input?

最后道出某种无奈:

Yet, despite their obvious drawbacks, regular expresssions are widely used.

什么是Sloppy Regluar Experssions?就是与Rigorous Regular Expresssions相对的正则。虽然写起来容易,但它是许多安全的问题的来源!?

Sloppy regular expressions are a popluar source of security exploits.

D.C指出JS的RegExp库的兼容性问题最少,因为这玩意的核心复杂的很,一般不会作多大的变动。注意用literal方式写正则其实是共享一个实例。例如:
function makeMatcher(){ return /a/gi; } var x = makeMatcher(); var y = makeMatcher(); // Beware: x and y are the same object! x.lastIndex = 10; alert(y.lastIndex); // 10说白了,其设计就是设计模式中的flyweight模式。回想起以前的一个bug不知所然,现在联系到这一点,终于有点眉目了……呵呵

目录
相关文章
|
11月前
|
JavaScript 数据安全/隐私保护
JS正则验证密码
JS正则验证密码
93 0
|
JavaScript 前端开发
JS正则表达式:常用正则手册/RegExp/正则积累(一)
JS正则表达式:常用正则手册/RegExp/正则积累
194 1
|
存储 JavaScript 安全
JS正则表达式:常用正则手册/RegExp/正则积累(二)
JS正则表达式:常用正则手册/RegExp/正则积累
170 0
|
10月前
|
JavaScript 程序员 索引
老程序员分享:JS基础知识(正则)
老程序员分享:JS基础知识(正则)
40 0
|
11月前
|
JavaScript 前端开发
JS中正则方法的使用 - 蓝易云
以上就是JavaScript中正则方法的基本使用。这些方法可以用于执行复杂的字符串处理和验证任务。
57 1
|
11月前
|
JavaScript 前端开发
JavaScript的正则解读
JavaScript的正则解读
|
11月前
|
JavaScript 小程序
vue获取URL参数 ,正则 JS-获取URL指定参数的 3 种方法
vue获取URL参数 ,正则 JS-获取URL指定参数的 3 种方法
306 0
|
JavaScript 开发者
JS基本变量,常用方法,this,正则
JS基本变量,常用方法,this,正则
JS基本变量,常用方法,this,正则
|
JavaScript 前端开发 数据安全/隐私保护
javascript正则姓名加密,保留姓,名用*号代替
javascript正则姓名加密,保留姓,名用*号代替
215 0
|
JavaScript 前端开发
javaScript正则截取自定义标签
javaScript正则截取自定义标签
140 0