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 相关文章推荐
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
Dec 05 Javascript
浅谈JavaScript中Date(日期对象),Math对象
Feb 05 Javascript
jquery彩色投票进度条简单实例演示
Jul 23 Javascript
很全面的JavaScript常用功能汇总集合
Jan 22 Javascript
解析javascript瀑布流原理实现图片滚动加载
Mar 10 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
vue.js 实现评价五角星组件的实例代码
Aug 13 Javascript
JavaScript, select标签元素左右移动功能实现
May 14 Javascript
关于React Native 无法链接模拟器的问题
Jun 21 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
ext 代码生成器
2009/08/07 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
Python多进程写入同一文件的方法
2019/01/14 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
深入了解Django View(视图系统)
2019/07/23 Python
python验证码图片处理(二值化)
2019/11/01 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python梯度下降算法的实现
2020/02/24 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python datetime模块的使用示例
2021/02/02 Python
领班岗位职责范文
2014/02/06 职场文书
会计助理岗位职责
2014/02/17 职场文书
单位同意报考证明
2015/06/17 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
python基于机器学习预测股票交易信号
2021/05/25 Python
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL