1. ^ 字符串的开始; $ 字符串的结束
example: "^abc" 以abc 开头 "def$" 以def结尾
2. * 没有或者更多; + 一次或者更多 ; ? 没有或者一个
example: "ab*" a 后面跟着零个或者若干个b;
"ab+" a 后面后面跟着一个b或者若干个b ;
"ab?" a 后面跟着零个b或者一个b
"a?b+$" 结尾处,没有a或者一个a后面一个或者多个b; 以没有a或者一个a后面一个或者多个b结尾(从后面往前读)
3. { } 表示重复次数
example: "ab{2}" a后面跟着两个b
"ab{2,}" a后面跟着至少两个b
"ab{2,5}" a 后面跟着2到5个b
4. | 表示或
example: "hi | hello" 字符串里有hi 或者hello
(b | cd)ef 'bef' 或者cdef
5. . 代表任何字符串
example: "a.[0-9]" a 后面跟着任意一个字符和任意一个数字
"^.{3}$" 任意三个字符的字符串
6. [] 括号的内容是可选字符集, 某些字符允许在一个字符串中的某一特定位置出现
example:
"[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");
"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");
"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。
常用正则匹配:
//校验密码:只能输入6-10个以字母开头、可带数字、“_”、“.”的字串
/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){5,9}$/
拆分: ^[a-zA-Z]{1} 一个字母开头,
([a-zA-Z0-9] | [._]) 数字,字母 或者 ._
{4,19} 4-19 个
// 常用密码 只能输入6-20个字母、数字、下划线, \w 用于匹配字母 数字 下划线
/^(\w){6,20}$/
//校验URL
/^http[s]{0,1}:\/\/.+$/
或
/^http[s]{0,1}:\/\/.{1,n}$/
(表示url串的长度为length(“https://”) + n )
\ / :表示字符“/”。
匹配URL 和IP地址的
function IsURL (str_url) { var strRegex = '^((https|http|ftp|rtsp|mms)?://)' + '?(([0-9a-z_!~*\'().&=+$%-]+: )?[0-9a-z_!~*\'().&=+$%-]+@)?' //ftp的user@ + '(([0-9]{1,3}.){3}[0-9]{1,3}' // IP形式的URL- 199.194.52.184 + '|' // 允许IP和DOMAIN(域名) + '([0-9a-z_!~*\'()-]+.)*' // 域名- www. + '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z].' // 二级域名 + '[a-z]{2,6})' // first level domain- .com or .museum + '(:[0-9]{1,4})?' // 端口- :80 + '((/?)|' // a slash isn't required if there is no file name + '(/[0-9a-z_!~*\'().;?:@&=+$,%#-]+)+/?)$'; var re=new RegExp(strRegex); //re.test() if (re.test(str_url)) { return (true); } else { return (false); } }
取出 a 的 href: /(?<=<a\s*.*href=")[^"]*(?=")/g => www.com
- 已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById” 正则解决
var a = 'get-element-by-id'.split("-");
var b= [];
a.forEach(function(i){b.push(titleCase(i))})
function titleCase(str) { return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()); };
function firstLowerCase(str) { return str.replace(/( |^)[A-Z]/, (L) => L.toLowerCase()); };
firstLowerCase(b.join().replace(/,/g,''));
// "getElementById"
对电话号码的部分隐藏:
"13456789012".replace(/(\d{3})(\d{4})(\d{4})/,"$1****$3")
主要通过分组将里面部分的需要隐藏的替换