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 相关文章推荐
JQuery 学习笔记 选择器之三
Jul 23 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
Oct 17 Javascript
基于Jquery的动态创建DOM元素的代码
Dec 28 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
Javascript基础教程之while语句
Jan 18 Javascript
AngularJS内建服务$location及其功能详解
Jul 01 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
JavaScript用JSONP跨域请求数据实例详解
Jan 06 Javascript
浅谈Angular HttpClient简单入门
May 04 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
Nov 01 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
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
javascript中的隐式调用
2018/02/10 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
python 字符串格式化代码
2013/03/17 Python
Python中zfill()方法的使用教程
2015/05/20 Python
python生成IP段的方法
2015/07/07 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Python @property及getter setter原理详解
2020/03/31 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
中职生自我鉴定范文
2013/10/03 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
员工教育培训协议书
2014/09/27 职场文书
离婚协议书范文2015
2015/01/26 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
七一表彰大会简报
2015/07/20 职场文书
《迟到》教学反思
2016/02/24 职场文书