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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
给js文件传参数(详解)
Jul 13 Javascript
AngularJS内置指令
Feb 04 Javascript
JS实现仿QQ效果的三级竖向菜单
Sep 25 Javascript
jQuery获取同级元素的简单代码
Jul 09 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
Nov 22 Javascript
JavaScript中return用法示例
Nov 29 Javascript
详解用async/await来处理异步
Aug 28 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 Javascript
node.js文件的复制、创建文件夹等相关操作
Feb 05 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
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
php中strlen和mb_strlen用法实例分析
2016/11/12 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JS中 用户登录系统的解决办法
2013/04/15 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Django中几种重定向方法
2015/04/28 Python
Python编程中的文件操作攻略
2015/10/16 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
妇产科护士自我鉴定
2013/10/15 职场文书
品质主管的岗位职责
2013/12/04 职场文书
货车司机岗位职责
2014/03/18 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
党员发展大会主持词
2015/07/03 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python