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的遍历同id元素 并响应事件的代码
Jun 14 Javascript
JS动态添加iframe的代码
Sep 14 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
Mar 30 Javascript
bootstrap3 兼容IE8浏览器!
May 02 Javascript
判断js的Array和Object的实现方法
Aug 29 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
Feb 14 Javascript
js中document.referrer实现移动端返回上一页
Feb 22 Javascript
简单实现jQuery弹窗效果
Oct 30 jQuery
浅谈React碰到v-if
Nov 04 Javascript
原生js添加一个或多个类名的方法分析
Jul 30 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
jquery插件实现悬浮的菜单
Apr 24 jQuery
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数据缓存的使用说明
2013/05/10 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
python中的变量如何开辟内存
2018/06/26 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
区分python中的进程与线程
2020/08/13 Python
python把一个字符串切开的实例方法
2020/09/27 Python
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
培训主管的岗位职责
2013/11/23 职场文书
小学开学寄语
2014/01/19 职场文书
元旦获奖感言
2014/03/08 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
物业管理交接协议书
2016/03/24 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL