We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
正则表达式的位置是指相邻字符之间的位置,也就是锚 6个锚:^、$、\b、\B、(?=p)、(?!p)
测试:
var regec = /.^/
var regec = /\B(?=(\d{3})+\b)/g
var regex = /((?=.*[0-9])(?=.*[a-z])|(?=.*[0-9])(?=.*[A-Z])|(?=.*[a-z])(?=.*[A- Z]))^[0-9A-Za-z]{6,12}$/
var regex = /(?!^[0-9]{6,12}$)(?!^[a-z]{6,12}$)(?!^[A-Z]{6,12}$)^[0-9A-Za-z]{6,12}$/;
括号两大作用:分组和分支结构 分支:多选分支结构 (p1|p2) 中,提供了分支表达式的所有可能 分组引用:可以用于数据提取以及替换操作,分组后面有量词的话,分组最终捕获到的数据是最后一次的匹配 示例: 数据提取
var regex = /(\d{4})-(\d{2})-(\d{2})/; var string = "2017-06-12"; console.log( string.match(regex) ); // => ["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12"]
match 返回的一个数组,第一个元素是整体匹配结果,然后是各个分组(括号里)匹配的内容,然后是匹配下标,最后是输入的文本。另外,正则表达式是否有修饰符 g,match返回的数组格式是不一样的 数据替换
var regex = /(\d{4})-(\d{2})-(\d{2})/; var string = "2017-06-12"; var result = string.replace(regex, "$2/$3/$1"); console.log(result); // => "06/12/2017"
replace 中的,第二个参数里用 $1、$2、$3 指代相应的分组
反向引用,是引用前面的分组,正则里引用了不存在的分组时,此时正则不会报错,只是匹配 反向引用的字符本身。
var regex = /\d{4}(-|\/|\.)\d{2}\1\d{2}/; var string1 = "2017-06-12"; var string2 = "2017/06/12"; var string3 = "2017.06.12"; var string4 = "2016-06/12"; console.log( regex.test(string1) ); // true console.log( regex.test(string2) ); // true console.log( regex.test(string3) ); // true console.log( regex.test(string4) ); // false
里面的 \1,表示的引用之前的那个分组 (-|/|.)。不管它匹配到什么(比如 -),\1 都匹配那个同 样的具体某个字符,注意如果要匹配 \1 和 0 的话,请使用 (?:\1)0 或者 \1(?:0)
只想要括号最原始的功能,但不会引用它,即,既不在 API 里引用,也不在正则里反向引用,此时可以使用非捕获括号 (?:p) 和 (?:p1|p2|p3)
var regex = /(?:ab)+/g; var string = "ababa abbb ababab"; console.log( string.match(regex) ); // => ["abab", "ab", "ababab"] var regex = /^I love (?:JavaScript|Regular Expression)$/; console.log( regex.test("I love JavaScript") ); console.log( regex.test("I love Regular Expression") );
示例:
// 第一种,匹配到开头和结尾的空白符,然后替换成空字符 var reges = /^\s+|\s+$/g // 第二种,匹配整个字符串,然后用引用来提取出相应的数据 str.replace(/^\s*(.*?)\s*$/g, "$1")
function titleize (str) { return str.toLowerCase().replace(/(?:^|\s)\w/g, function (c) { return c.toUpperCase(); }); } console.log( titleize('my name is epeli') );
function camelize (str) { return str.replace(/[-_\s]+(.)?/g, function (match, c) { return c ? c.toUpperCase() : ''; }); } console.log( camelize('-moz-transform') );
function dasherize (str) { return str.replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase(); } console.log( dasherize('MozTransform') );
// 将HTML特殊字符转换成等值的实体 function escapeHTML (str) { var escapeChars = { '<' : 'lt', '>' : 'gt', '"' : 'quot', '&' : 'amp', '\'' : '#39' }; return str.replace(new RegExp('[' + Object.keys(escapeChars).join('') +']', 'g'), function (match) { return '&' + escapeChars[match] + ';'; }); } console.log( escapeHTML('<div>Blah blah blah</div>') );
var regex = /<([^>]+)>[\d\D]*<\/\1>/; var string1 = "<title>regular expression</title>"; var string2 = "<p>laoyao bye bye</p>"; var string3 = "<title>wrong!</p>"; console.log( regex.test(string1) ); // true console.log( regex.test(string2) ); // true console.log( regex.test(string3) ); // false
The text was updated successfully, but these errors were encountered:
No branches or pull requests
位置
正则表达式的位置是指相邻字符之间的位置,也就是锚
6个锚:^、$、\b、\B、(?=p)、(?!p)
测试:
括号
括号两大作用:分组和分支结构
分支:多选分支结构 (p1|p2) 中,提供了分支表达式的所有可能
分组引用:可以用于数据提取以及替换操作,分组后面有量词的话,分组最终捕获到的数据是最后一次的匹配
示例:
数据提取
反向引用
反向引用,是引用前面的分组,正则里引用了不存在的分组时,此时正则不会报错,只是匹配 反向引用的字符本身。
非捕获括号
只想要括号最原始的功能,但不会引用它,即,既不在 API 里引用,也不在正则里反向引用,此时可以使用非捕获括号 (?:p) 和 (?:p1|p2|p3)
示例:
The text was updated successfully, but these errors were encountered: