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 相关文章推荐
异步javascript的原理和实现技巧介绍
Nov 08 Javascript
javascript实现焦点滚动图效果 具体方法
Jun 24 Javascript
基于jquery的9行js轻松实现tab控件示例
Oct 12 Javascript
js形成页面的一种遮罩效果实例代码
Jan 04 Javascript
基于JQuery实现图片上传预览与删除操作
May 24 Javascript
AngularJS基础 ng-model 指令详解及示例代码
Aug 02 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
vue实现文章内容过长点击阅读全文功能的实例
Dec 28 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
基于vue实现移动端圆形旋钮插件效果
Nov 28 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
May 14 Javascript
vue实现短信验证码输入框
Apr 17 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
php数组查找函数总结
2014/11/18 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
激活 ActiveX 控件
2006/10/09 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
如何掌握自荐信格式呢
2013/11/19 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
红旗方阵解说词
2014/02/12 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
Python基础之数据类型知识汇总
2021/05/18 Python
python使用pymysql模块操作MySQL
2021/06/16 Python
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
Python使用pyecharts控件绘制图表
2022/06/05 Python