javascript中expression的用法整理


Posted in Javascript onMay 13, 2014

小哥我最近在学习javaScript, 学到regular expression的时候见知识点有些杂乱,所以特别写篇博客做个总结。

定义

在javascript里定义reg exp有两种方法:

1) 用new exp : var exp1 = new exp("abc");

2) 直接在两个/中间放pattern: var exp2 = /abc/; //注意。。没有双引号哟, 加了就成string了

特殊字符

目测特殊字符和perl的是一样的。。直接拿来用就好

\d Digit characters
\w Alphanumeric characters (“word characters”)
\s Whitespace characters (space, tab, newline, and similar)
\D Characters that are not digits
\W Non-alphanumeric characters
\S Non-whitespace characters
. A period matches all characters except newlines
有个很简单的记的方法:

d = digit 所以是数字

w = word 所以是字母

s = space 所以是空格

所有大写全是反的。。

括号[]

在括号中放pattern 代表只要符合任意字符都为真。 (和java 或者 Perl都是一样一样的)

比如

console.log(/[01]/.test("023424")); // true console.log(/[01]/.test("13424")); // true 
console.log(/[01]/.test("23424")); // false

括号()

表示要符合括号里的全部才会为真

比如

console.log(/[01]/.test("013424")); // true console.log(/[01]/.test("13424")); // false 
console.log(/[01]/.test("230424")); // false 
console.log(/[01]/.test("230142401")); // true

Quantifiers

和java是一样一样一样的。。 这个表很好。。小哥我一直喜欢用

Greedy Reluctant Possessive Meaning
X? X?? X?+ X, once or not at all
X* X*? X*+ X, zero or more times
X+ X+? X++ X, one or more times
X{n} X{n}? X{n}+ X, exactly n times
X{n,} X{n,}? X{n,}+ X, at least n times
X{n,m} X{n,m}? X{n,m}+ X, at least n but not more thanm times

expression object functions

1) test 这个很简单,只用把要test的string放到test(...)里,这个function就会return true/false 代表 match/unmatch

2) exec, 这个function返还null如果没有找到match的string.. 如果找到了就会返还一个array. 这个里边包含按顺序match的string

3) String.replace(expression1, string1) 这个function把expression中match的部分换成string1, string1里可以用之前expression中的parenthesized group

,来替代其中的某个部分。 比如说"co-ol".replace(/[\w]+\-[\w]+/,"$2-$1"); //"ol-co" 一直可以用到$9

4)String.replace(expression, function) 这个是加强版,而且很强大, 可以通过function来定义任何你想要的output。具体用法不在这里一一列出,请参考

点击打开链接

动态生成reg expression
当你想要用在reg exp里的东西只有runtime才知道的时候,这个方法就可以适用
生成reg exp其实只需要用string 建好reg exp的样子, 再用Exp的constructor就可以。 (在文章开头的地方提到过)

例如:

var name = "dear" “oh, my dear”.replace(new Exp(name), "god"); // oh, my god

但是如果名字中有特殊字符可能会用在regular expression的时候, 往往上边的方法会出错。
所以, 在那种情况下,我们可以把input string的每一个字符的前边都加上反斜杠 比如:
var name = df[]vxv; 
var expName = name.replace("/[^/w/s]/g","\\$&"); 
"my name is df[]vxv".replace(new Exp(name), "Bob"); // my name is Bob
Javascript 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
express文件上传中间件Multer详解
Oct 24 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
Dec 24 Javascript
react-router4 嵌套路由的使用方法
Jul 24 Javascript
分享vue.js devtools遇到一系列问题
Oct 24 Javascript
Vue路由切换时的左滑和右滑效果示例
May 29 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
Aug 14 Javascript
微信小程序如何使用canvas二维码保存至手机相册
Jul 15 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
Javascript Web Worker使用过程解析
Mar 16 Javascript
JS函数重载的解决方案
May 13 #Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 #Javascript
JS获得浏览器版本和操作系统版本的例子
May 13 #Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
May 13 #Javascript
js语法学习之判断一个对象是否为数组
May 13 #Javascript
js中定义一个变量并判断其是否为空的方法
May 13 #Javascript
jQuery 计算iframe 窗口大小的方法
May 13 #Javascript
You might like
用 php 编写的日历
2006/10/09 PHP
PHP简单日历实现方法
2016/07/20 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
python正则表达式的使用
2017/06/12 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
Python hashlib模块实例使用详解
2019/12/24 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
Python Selenium库的基本使用教程
2021/01/04 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
餐饮投资计划书
2014/04/25 职场文书
525心理活动总结
2014/07/04 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
公司更名通知函
2015/04/24 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
Apache Calcite 实现方言转换的代码
2021/04/24 Servers