正则表达式js,JS正则表达式详解
正则表达式js,JS正则表达式详解详细介绍
本文目录一览: js中的正则表达式如何使用(附代码)
这次给大家带来js中的正则表达式如何使用(附代码),使用js中正则表达式注意事项有哪些,下面就是实战案例,一起来看一下。阅读目录正则表达式的创建正则表达式中的特殊字符\ (反斜杠)^$*, +, .(小数点)? (问号)(x)(?:x)x(?=y), x(?!y), x|y{n}, {n,m}:[xyz], [^xyz]其他正则表达式标志正则表达式使用很多时候多会被正则表达式搞的晕头转向,最近抽出时间对正则表达式进行了系统的学习,整理如下:正则表达式的创建两种方法,一种是直接写,由包含在斜杠之间的模式组成;另一种是调用RegExp对象的构造函数。两种方法的创建代码如下:// 直接创建const regex1 = /ab+c/;const regex2 = /^[a-zA-Z]+[0-9]*\W?_$/gi;// 调用构造函数const regex3 = new RegExp('ab+c');const regex4 = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi");const regex5 = new RegExp('^[a-zA-Z]+[0-9]*\W?_$', 'gi');可以看出,调用RegExp构造函数创建正则表达式时,第一个参数可以是字符串,也可以是直接创建的正则表达式。需要注意的是:RegExp实例继承的toLocaleString()和toString)()方法都会返回正则表达式的字面量,与创建正则表达式的方式无关例如:const ncname = '[a-zA-Z_][\\w\\-\\.]*';const qnameCapture = '((?:' + ncname + '\\:)?' + ncname + ')';const startTagOpen = new RegExp('^<' + qnameCapture);startTagOpen.toString(); // '/^<((?:[a-zA-Z_][\w\-\.]*\:)?[a-zA-Z_][\w\-\.]*)/'正则表达式中的特殊字符\ (反斜杠)1.在非特殊字符前加反斜杠表示下一个字符是特殊的;2.将其后的特殊字符转译为字面量;注意:在使用RegExp构造函数时要将\转译,因为\在字符串里也是转译字符^ 1.匹配输入的开始;2.在[]中的第一位时表示反向字符集;例子:/^A/.exec('an A') // null/^A/.exec('An E') // ["A", index: 0, input: "An E"]$ 匹配输入的结束/t$/.exec('eater') // null/t$/.exec('eat') // ["t", index: 2, input: "eat"]*, +, .(小数点)*:匹配前一个表达式0次或多次。等价于 {0,};+:匹配前面一个表达式1次或者多次。等价于 {1,};.:匹配除换行符之外的任何单个字符;? (问号)1.匹配前面一个表达式0次或者1次。等价于 {0,1};2.如果紧跟在任何量词 * + ? {} 的后面,将会使量词变为非贪婪的(匹配尽量少的字符),和缺省使用的贪婪模式正好相反;3.运用于先行断言例子:/\d+/.exec('123abc') // ["123", index: 0, input: "123abc"]/\d+?/.exec('123abc') // ["1", index: 0, input: "123abc"](x)匹配 'x' 并且记住匹配项,括号表示捕获括号;例子:/(foo) (bar) \1 \2/.test('bar foo bar foo'); // false/(bar) (foo) \1 \2/.test('bar foo bar foo'); // true/(bar) (foo) \1 \2/.test('bar foo'); // false/(bar) (foo) \1 \2/.test('bar foo foo bar'); // false/(bar) (foo) \2 \1/.test('bar foo foo bar'); // true'bar foo bar foo'.replace( /(bar) (foo)/, '$2 $1' ); // "foo bar bar foo"模式 /(foo) (bar) \1 \2/ 中的 '(foo)' 和 '(bar)' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。模式中的 \1 和 \2 匹配字符串的后两个单词。注意:\1、\2、\n 是用在正则表达式的匹配环节,在正则表达式的替换环节,则要使用像 $1、$2、$n 这样的语法。例如,'bar foo'.replace( /(...) (...)/, '$2 $1' )。(?:x) 匹配 'x' 但是不记住匹配项,这种叫作非捕获括号;例子:'foo'.match(/foo{1,2}/) // ["foo", index: 0, input: "foo"]'foo'.match(/(?:foo){1,2}/) // ["foo", index: 0, input: "foo"]'foofoo'.match(/(?:foo){1,2}/) // ["foofoo", index: 0, input: "foofoo"]'foofoo'.match(/foo{1,2}/) // ["foo", index: 0, input: "foofoo"]使用场景:示例表达式 /(?:foo){1,2}/。如果表达式是 /foo{1,2}/,{1,2}将只对 ‘foo' 的最后一个字符 'o‘ 生效。如果使用非捕获括号,则{1,2}会匹配整个 ‘foo' 单词。x(?=y), x(?!y), x|y x(?=y):匹配'x'仅仅当'x'后面跟着'y';x(?!y):匹配'x'仅仅当'x'后面不跟着'y';x|y: 匹配x或y这两种匹配的结果都不包含y例子:'JackSprat'.match(/Jack(?=Sprat)/) // ["Jack", index: 0, input: "JackSprat"]'JackWprat'.match(/Jack(?=Sprat)/) // null'JackWprat'.match(/Jack(?=Sprat|Wprat)/) // ["Jack", index: 0, input: "JackWprat"]/\d+(?!\.)/.exec("3.141") // ["141", index: 2, input: "3.141"]{n}, {n,m}:{n}:匹配了前面一个字符刚好发生了n次;{n,m}:匹配前面的字符至少n次,最多m次。如果 n 或者 m 的值是0, 这个值被忽略;例子: /a{2}/.exec('candy') // null /a{2}/.exec('caandy') // ["aa", index: 1, input: "caandy"] /a{2}/.exec('caaandy') // ["aa", index: 1, input: "caaandy"] /a{1,3}/.exec('candy') // ["a", index: 1, input: "candy"] /a{1,3}/.exec('caandy') // ["aa", index: 1, input: "caandy"] /a{1,3}/.exec('caaandy') // ["aaa", index: 1, input: "caaandy"] /a{1,3}/.exec('caaaandy') // ["aaa", index: 1, input: "caaaandy"][xyz], [^xyz] [xyz]:一个字符集合。匹配方括号的中任意字符;[^xyz]:一个反向字符集。匹配任何没有包含在方括号中的字符;这两种匹配都可以使用破折号(-)来指定一个字符范围,特殊符号在字符集中没有了特殊意义。例:function escapeRegExp(string){ return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$&"); //$&表示整个被匹配的字符串}例子中的.*+?^=!:${}()都表示字面量,并没有特殊意义。其他\b:匹配一个词的边界。一个匹配的词的边界并不包含在匹配的内容中。换句话说,一个匹配的词的边界的内容的长度是0;\B: 匹配一个非单词边界;例子: /\bm/.exec('moon')// ["m", index: 0, input: "moon"] /\bm/.exec('san moon')// ["m", index: 4, input: "san moon"] /oo\b/.exec('moon')// null /\B../.exec('noonday') // ["oo", index: 1, input: "noonday"] /y\B../.exec('possibly yesterday') // /y\B../.exec('possibly yesterday')\d:匹配一个数字,等价于[0-9];\D:匹配一个非数字字符,等价于[^0-9];\f:匹配一个换页符 (U+000C);\n:匹配一个换行符 (U+000A);\r:匹配一个回车符 (U+000D);\s:匹配一个空白字符,包括空格、制表符、换页符和换行符,等价于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff];\S:匹配一个非空白字符,等价于[^ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff];\w:匹配一个单字字符(字母、数字或者下划线),等价于[A-Za-z0-9_];\W:匹配一个非单字字符,等价于[^A-Za-z0-9_];正则表达式标志g:全局搜索;i:不区分大小写;m:多行搜索;正则表达式使用RegExp有exec()和test()方法;exec匹配的结果为:匹配结果、捕获结果,index和input。test匹配的结果为true或false,效率比exec要高。String有match(),replace(),search(),split()方法;match匹配的结果同RegExp的exec,replace根据正则表达式替换,search查找所以位置,split根据正则表达式分割字符串。其中,当replace有function时,参数说明如下:* 匹配项* 记忆项(括号里面的项)* ...* 匹配的index* input输入项相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:在JS里编写简单的正则方式正则与Linux三大文本处理工具的使用详解
js中怎么写正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。正则表达式可以是一个简单的字符,或一个更复杂的模式。正则表达式可用于所有文本搜索和文本替换的操作。语法/正则表达式主体/修饰符(可选)其中修饰符是可选的。在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。search() 方法使用正则表达式实例:使用正则表达式搜索 "php" 字符串,且不区分大小写:var str = "Visit php!"; var n = str.search(/php/i);输出结果为:6search() 方法使用字符串search 方法可使用字符串作为参数。字符串参数会转换为正则表达式:实例:检索字符串中 "php" 的子串:var str = "Visit php!"; var n = str.search("php");replace() 方法使用正则表达式实例:使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"php");结果输出为:Visit php!replace() 方法使用字符串replace() 方法将接收字符串作为参数:var str = document.getElementById("demo").innerHTML; var txt = str.replace("Microsoft","php");
JS正则表达式详解
RegExp是JS的正则表达式对象,实例化一个RegExp对象有 字面量 和 构造函数 2种方式。
字面量实例化RegExp对象
var reg=/js/gi;
开始和结束的斜线/是正则表达式的边界,//中间的文本是正则表达式文本,后面的gi是正则表达式的修饰符。
构造函数实例化RegExp对象
var reg=new Regex(‘js’,’gi’);
第一个参数是正则表达式文本,第二个参数是正则表达式修饰符。
global:RegExp 对象是否具有标志 g。
ignoreCase:RegExp 对象是否具有标志 i。
lastIndex:一个整数,标示开始下一次匹配的字符位置。
multiline:RegExp 对象是否具有标志 m。
source:正则表达式的源文本。
RegExp 对象有 3 个方法:test()、exec() 以及 compile()。
test()
test() 方法检索字符串中的指定值。返回值是 true 或 false。
示例:
var reg=/js/gi;
var result=reg.test(‘I like js’);
结果:true
exec()
exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。
示例:
var reg=/js/gi;
var result=reg.exec(‘I like JS’);
结果:JS
compile()
compile() 方法用于改变 RegExp。
compile() 既可以改变检索模式,也可以添加或删除第二个参数。
g:global全文搜索,如果不添加此参数,搜索到第一个匹配就会停止
i:ignore case 不区分大小写,默认是区分大小写的
m:multiple lines 多行搜索,默认只搜索第一行
正则表达式文本部分包含 原义文本字符 和 元字符, 其中的原义文本字符代表字符本身意义的字符,如abc123之类的字符。
元字符代表有特殊含义非字母字符,如\b、\w、\d、+、*、? 等。
常用的元字符
更多的JS正则元字符请参考: http://www.runoob.com/regexp/regexp-metachar.html
一般情况下正则表达式中的一个字符对应字符串中的一个字符,如表达式ab的含义是ab。
表达式中用 [] 来定义一个字符类,表示可以匹配[]里面的这类字符,是一个泛指,而不是一一对应的关系。
如表达式[abc123],表示有其中一个字符串都可以匹配。
在字符类里面使用横线-连接2个数字或者字母就可以构建一个范围类,如[a-zA-z0-9-]表示可以匹配26个大小写字母和0-9的全部数字以及横线-。
注意,要匹配横线”-“,必须把横线放在最后面。
预定义类可以理解为JS默认给我们写好的范围类,让我们可以使用一个简单的元字符来使用它。如”\w”就是一个预定义类,它等价于范围类[A-Za-z0-9_];“.”可以匹配除 “\n” 之外的任何单个字符。
边界包含2种,一种是以字符串开始或结尾的边界,另一种是单词边界
量词表示可以匹配连续多次的元字符
JS正则表达式默认是贪婪模式匹配,它会以最多匹配原则进行查找,非贪婪模式可以让表达式以最少匹配原则进行查找。
非贪婪模式只需要在量词后面加上”?”即可,如”123456789″字符串想以3个数字为一组进行匹配表达式写法/\d{3,5}?/g。
表达式中用 () 来定义一个分组,使元字符可以作用于一个表达式字符串组合,如/(js|php){3}/gi。
表达式中的每一个分组匹配的内容都是一个可以捕获的变量,可以使用$1、$2、$3… 来取值,如表达式/(\d{4})-(\d{2})-(\d{2})/中包含$1、$2、$3。如果想忽略分组匹配的内容,需要在分组前面增加“?:”,就可以得到分组匹配之外的内容。
前瞻就是正则表达式后面加上断言部分,它不但要匹配表达式部分,还需要满足断言部分,匹配的结果不会包含断言部分。
正向前瞻 exp(?=assert) 如 “\w(?=\d)”
负向前瞻 exp(?!assert) 如 “\w(?!\d)”
match()
stringObject.match(regexp)
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。
如果没有找到任何匹配的文本, match() 将返回 null。
否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。
search()
stringObject.search(regexp)
search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。
replace()
stringObject.replace(regexp/substr,replacement)
字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
split()
stringObject.split(separator,howmany)
如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)
正则表达式语法语意测试工具: https://regexper.com/
js常用正则表达式有哪些
用户名正则//用户名正则,4到16位(字母,数字,下划线,减号)var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;//输出 trueconsole.log(uPattern.test("iFat3"));密码强度正则//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;//输出 trueconsole.log("=="+pPattern.test("iFat3#"));整数正则//正整数正则var posPattern = /^\d+$/;//负整数正则var negPattern = /^-\d+$/;//整数正则var intPattern = /^-?\d+$/;//输出 trueconsole.log(posPattern.test("42"));//输出 trueconsole.log(negPattern.test("-42"));//输出 trueconsole.log(intPattern.test("-42"));数字正则可以是整数也可以是浮点数//正数正则var posPattern = /^\d*\.?\d+$/;//负数正则var negPattern = /^-\d*\.?\d+$/;//数字正则var numPattern = /^-?\d*\.?\d+$/;console.log(posPattern.test("42.2"));console.log(negPattern.test("-42.2"));console.log(numPattern.test("-42.2"));Email正则//Email正则var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;//输出 trueconsole.log(ePattern.test("65974040@qq.com"));手机号码正则//手机号正则var mPattern = /^[1][3][0-9]{9}$/;//输出 trueconsole.log(mPattern.test("13800"));身份证号正则//身份证号(18位)正则var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;//输出 trueconsole.log(cP.test("11010513800X"));URL正则//URL正则var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;//输出 trueconsole.log(urlP.test("http://42du.cn"));IPv4地址正则//ipv4地址正则var ipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;//输出 trueconsole.log(ipP.test("115.28.47.26"));十六进制颜色正则//RGB Hex颜色正则var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;//输出 trueconsole.log(cPattern.test("#b8b8b8"));日期正则//日期正则,简单判定,未做月份及日期的判定var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;//输出 trueconsole.log(dP1.test("2017-05-11"));//输出 trueconsole.log(dP1.test("2017-15-11"));//日期正则,复杂判定var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;//输出 trueconsole.log(dP2.test("2017-02-11"));//输出 falseconsole.log(dP2.test("2017-15-11"));//输出 falseconsole.log(dP2.test("2017-02-29"));QQ号码正则//QQ号正则,5至11位var qqPattern = /^[1-9][0-9]{4,10}$/;//输出 trueconsole.log(qqPattern.test("65974040"));微信号正则//微信号正则,6至20位,以字母开头,字母,数字,减号,下划线var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;//输出 trueconsole.log(wxPattern.test("RuilongMao"));车牌号正则//车牌号正则var cPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;//输出 trueconsole.log(cPattern.test("京K39006"));包含中文正则//包含中文正则var cnPattern = /[\u4E00-\u9FA5]/;//输出 trueconsole.log(cnPattern.test("42度"));按 Ctrl+C 按 Ctrl+C Regex_Phones: /^[0-9],$/, // 数字和逗号Regex_Ident: /^([a-zA-Z0-9]){1,50}$/, //英文、数字且不能包含英文标点和特殊符号(渠道标识)Regex_IdentName: /^([\u2E80-\u9FFF]|[a-zA-Z0-9]){1,50}$/, //中文、英文、数字且不能包含英文标点和特殊符号(渠道名称)Regex_MondyNum: /^\d+(\.\d{1,2})?$/, //金额,允许两位小数Regex_MondyCh: /^[\u4e00-\u9fa5]+$/, //只能为中文Regex_PhoneNum: /(^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$)|(^0{0,1}1[3|4|5|6|7|8|9][0-9]{9}$)/, //电话号码和手机Regex_ZNum: /^[1-9]\d*$/ //正整数Regex_Name: /^[a-zA-Z][a-zA-Z0-9_@]{0,30}$/, // 用户名Regex_NickName: /^[\u4E00-\u9FA5A-Za-z0-9_\-]+$/, // 中文/英文/数字, (昵称、组名、朋友备注名、内容名称、书名、页名) Regex_Passport: /^1[45][0-9]{7}$|G[0-9]{8}$|P\.[0-9]{7}$|S[0-9]{7,8}$|D[0-9]{7,8}$/, // 护照Regex_BizLience: /^([0-9a-zA-Z]{18}$|\d{15}$)/, // 营业执照,三证合一的是18位Regex_isExitZh:/[\u4E00-\u9FA5\uF900-\uFA2D]/, // 验证是否存在中文Regex_price:/^\d+(\.\d{1,2})?$/ // 数字 . 最多两位有效数字Regex_EnghlishNum:/^(?=.*\d)(?=.*[a-z])[a-zA-Z\d]{6,20}$/ //6至20位英文和数字组合Regex_Phone: /^0?(13[0-9]|15[012356789]|18[0-9]|14[57])[0-9]{8}$/, // 手机号Regex_Mobile: /^0?(13[0-9]|15[012356789]|18[0-9]|14[57])[0-9]{8}$/, // 手机号Regex_Card: /\\d{14}[[0-9],0-9xX]/, // 身份证号 Regex_Email: /^[a-zA-Z0-9]+([._\\-]*[a-zA-Z0-9])*@([a-zA-Z0-9]+[-a-zA-Z0-9]*[a-zA-Z0-9]+.){1,63}[a-zA-Z0-9]+$/, // 邮箱Regex_RealName: /^[a-zA-Z\u4e00-\u9fa5]{0,}$/, // 真实姓名、朋友昵称、朋友全称、组名称、组标签Regex_text: /^[\u4e00-\u9fa5]{0,}$/, // 地区 、省份、城市
Js 中的 正则表达式?
(\d{3}-|\d{4}-)?(\d{8}|\d{7})? //国内电话
^[1-9]*[1-9][0-9]*$ //腾讯QQ
^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$ //email地址
^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ //url
^\d+$ //非负整数
^[0-9]*[1-9][0-9]*$ //正整数
^((-\\d+)|(0+))$ //非正整数
^-[0-9]*[1-9][0-9]*$ //负整数
^-?\\d+$ //整数
^\\d+(\\.\\d+)?$ //非负浮点数
^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //正浮点数
^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$ //非正浮点数
^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //负浮点数
^(-?\\d+)(\\.\\d+)?$ //浮点数
^[A-Za-z]+$ //由26个英文字母组成的字符串
^[A-Z]+$ //由26个英文字母的大写组成的字符串
^[a-z]+$ //由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //由数字和26个英文字母组成的字符串
^\\w+$ //由数字、26个英文字母或者下划线组成的字符串
1定义正则表达式
在js中定义正则表达式很简单,有两种方式,一种是通过构造函数,一种是通过//,也就是两个斜杠。
例如
代码如下:
var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
使用构造函数定义正则表达式,注意大小写,负责就会不起作用。由于构造函数的参数是一个字符串,也可以是两个斜杠的方式定义,遇到一些特殊字符就需要使用\进行转义
通过双斜杠的方式定义同样的正则表达式
代码如下:
var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
代码如下:
var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);
可以和构造函数达到同样的效果,但仔细分析,发现,通过构造函数需要更多的转义字符\
2关于验证的三个正则表达式方法
使用正则表达式的主要有字符串的方法match,正则表达式的方法exec,test
正则表达式方法test测试给定的字符串是否满足正则表达式,返回值是bool类型的,只有真和假,如果只是单纯的判断,不需要其他的处理,可以使用尤其是验证时。
代码如下:
function test(){
var text="index.aspx?test=1&ww=2&www=3"; //
var re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.test(text);
if(result)
{
alert("ok");
}else
{
alert("err");
}
}
正则表达式方法exec测试给定的字符串是否满足正则表达式,返回匹配到的字符串,如果没有匹配的则返回null,和test基本一致,如果需要获取匹配的各个子字符串,可以使用下标的方式,把上边的test的例子可以改写如下
代码如下:
function test(){
var text="index.aspx?test=1&ww=2&www=3";
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re =new RegExp( "\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");
var result= re.exec(text);
if(result)
{
alert("ok");
alert(result); // 是?test=1&ww=2&www=3,ww=2&
alert(result[0]+",0");//是?test=1&ww=2&www=3
alert(result[1]+",1");//是ww=2&
}else
{
alert("err");
}
}
match其实是字符串的方法,但参数确是一个正则表达式,把上边的例子改写后,如下
代码如下:
function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.match(re);
if(result)
{
alert(result);//?test=1&ww=234,test=1&
alert(result[0]+",0");//?test=1&ww=234
alert(result[1]+",1");//test=1&
}else
{
alert("err");
}
}
其实字符串类还有多个函数可以传递正则表达式,split,search,replace等但这些方法已经不适合验证了。
代码如下:
function test(){
var text="index.aspx?test=1&ww=234"; //
var re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;
// var re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"
var result= text.split(re);
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
}
3正则表达式式的转义字符
在正则表达式中会经常出现转义字符,例如问号?在正则表达式中有特殊的含义,如果需要匹配问号?就需要转义,使用转义字符反斜杠\
如下两个都是匹配问号开头的一段字符串
代码如下:
function test(){
var text="?test=1&ww=2&www=3";
var re = /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;// \?表示配置问号?
// var re =new RegExp( "^\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");// \\?表示配置问号?
var result= re.exec(text);
if(result)
{
alert("ok");
alert(result);
alert(result[0]+",0");
alert(result[1]+",1");
}else
{
alert("err");
}
}
js正则表达式是什么?
查找cookie中的等式,name是变量,如果name值是字符串history,则查找history=xxxxx;
(new RegExp("(^| )"+name+"=([^;]*)(;|$)"(^| ) 匹配行的开头或空格,"=([^;]*)(;|$)" 等号字符后面跟非分号的字符串,最后是分号或字符串的结尾 ,+号是将三个字符串连接起来,整个匹配一个等式,=号前是name变量中字符串,=后是值,等号后匹配到直到遇到分号或行尾。
扩展资料:
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
参考资料来源:百度百科-正则表达式
js正则表达式如何应用
本文主要和大家js中正则表达式的应用实例(包括面试题),希望能帮助到大家,能让大家正确使用js正则表达式。1、找重复项最多的字符和个数3、判断是否为邮箱email验证规则: 电子邮箱的正确写法一般为: 用户名@邮箱网站.com(.cn) 第一部分:由字母、数字、下划线、短线“-”、点号“.”组成第二部分:为一个域名,域名由字母、数字、短线“-”、域名后缀组成(域名后缀一般为两位到三位。例如:com cn net现在域名有的也会大于四位) function isEmail(str){ var reg =/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/; return reg.test(str); }4、验证手机号码验证规则: 11位数字,以1开头 function isEmail(str){ var reg =/^1([0-9]){10}$/; //也可以为 var reg= /^1\d{10}$/; return reg.test(str); }5、验证是否由数字和字母组成 function isEmail(str){ var reg =/^([0-9a-zA-Z])+$/; return reg.test(str); }6、如何获取一个字符串中的数字字符,并按数组形式输出例如:一串字符串:ddjsd234sdjs45sdda83ndas333sa9382ssd2var str ='dgfhfgh254bhku289fgdhdy67'; var arr = []; function arrFn(){ var re = /\d+/g ; arr.push(str.match(re)); return arr; }7、判断字符串是否存在连续重复的字母var re = /([a-zA-Z])\1+/;8、判断是否已元音字母结尾var re = /[aeiou]$/i; //不要忘了添加不区分大小写的字符i9、判断是否符合USD格式规则:给定字符串 str,检查其是否符合美元书写格式 1、以 $ 开始 2、整数部分,从个位起,满 3 个数字用 , 分隔 3、如果为小数,则小数部分长度为 2 4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3** var str ='$1,023,032.03'; var re = /^\$\d{1,3}((,\d{3}))*(\.\d{2})?$/; //需要注意的是特殊字符要加转义符号\10、获取URL参数规则:1. 指定参数名称,返回该参数的值 或者 空字符串 2. 不指定参数名称,返回全部的参数对象 或者 {} 3. 如果存在多个同名参数,则返回数组**// 获取 url 参数 function getUrlParam(sUrl, sKey) { var arr={}; sUrl.replace(/\??(\w+)=(\w+)&?/g,function(match,p1,p2){ //console.log(match,p1,p2); if(!arr[p1]){ arr[p1]=p2; } else { var p=arr[p1]; arr[p1]=[].concat(p,p2); } }) if(!sKey)return arr; else{ for(var ele in arr){ if(ele==sKey){return arr[ele];} } return ""; } }相关推荐:JS中正则表达式的理解总结js中正则表达式的创建与使用js中正则表达式是怎么使用的?
js密码正则表达式:要求包含大小写字母、数字和特殊符号,8~16位
1、首先我们在script中编写函数。
2、下图中的代码就是判断手机号码中最重要的代码,我们依次进行解释。
3、js正则表达式test方法的使用,test方法的返回值是布尔值,通过该值可以匹配字符串中是否存在于正则表达式相匹配的结果,如果有匹配内容,返回ture,如果没有匹配内容返回false,该方法常用于判断用户输入数据的合法性。
4、我们写入一个符合要求的手机号码。
5、然后进行测试得到如下图的测试结果"手机号码符合格式要求"。
6、我们写入一个不符合要求的手机号码。
JS正则表达式完整教程
亲爱的读者朋友,如果你点开了这篇文章,说明你对正则很感兴趣。
想必你也了解的重要性,在我看来正则表达式是衡量程序员水平的一个标准。
关于正则表达式的教程,网上也有很多,相信你也看了一些。
与之不同的是,本文的目的是希望所有认真读完的童鞋们,都有实质性的提高。
本文共有七章,用JavaScript语言完整地讨论了的方方面面。
如果觉得文章某块儿没有说明白清楚,欢迎留言,能力范围之内,老姚必做详细解答。
构造的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
用js的正则表达式检测电话号码,要求必须是1开头,只能是11位数字,该正则表达式怎么写?
表达式写法是:/^1\d{10}$/
解析:^1 以1开头,\d表示数字,\d{10}表示数字出现10次,加上前面以1开头,正好是11个数字,X$表示以X结尾,这里用$表示后面没有了,11个数字后已经是匹配字符串的结尾。
结果展示:
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。