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 相关文章推荐
破解Session cookie的方法
Jul 28 Javascript
javascript 播放器 控制
Jan 22 Javascript
Knockout text绑定DOM的使用方法
Nov 15 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
JS中操作JSON总结
Dec 06 Javascript
javascript中使用正则计算中文长度的例子
Apr 29 Javascript
jQuery照片伸缩效果不影响其他元素的布局
May 09 Javascript
5种JavaScript脚本加载的方式
Jan 16 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
Apr 28 Javascript
Node.js实现注册邮箱激活功能的方法示例
Mar 23 Javascript
js实现黑白div块画空心的图形
Dec 13 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漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
js对象的构造和继承实现代码
2010/12/05 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
BootStrap中
2016/12/10 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
举例讲解Python中的算数运算符的用法
2015/05/13 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python中装饰器学习总结
2018/02/10 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
python的scipy实现插值的示例代码
2019/11/12 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
python db类用法说明
2020/07/07 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
abstract class和interface有什么区别?
2012/01/03 面试题
利用异或运算实现两个无符号数的加法运算
2013/12/20 面试题
毕业生个人求职信范例分享
2013/12/17 职场文书
关于远足的感想
2015/08/10 职场文书
团结友爱主题班会
2015/08/13 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
导游词之澳门妈祖庙
2019/12/19 职场文书