正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
使用正则表达式,可以:
测试字符串内的模式。例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
替换文本。可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
基于模式匹配从字符串中提取子字符串。可以查找文档内或输入域内特定的文本。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
$ 匹配输入字符串的结尾位置。
( ) 标记一个子表达式的开始和结束位置。
*匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *。
+匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。
?匹配前面的子表达式零次或一次
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+号代表前面的字符必须至少出现一次(1次或多次)。
runoob,可以匹配 runob、runoob、runoooooob 等,号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
colou?r可以匹配 color 或者 colour 问号代表前面的字符最多只可以出现一次(0次、或1次)。
\将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符
^匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。
| 指明两项之间的一个选择
{n}n 是一个非负整数。匹配确定的 n 次。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次
. 匹配除换行符 \n 之外的任何单字符
正则 i表示忽略大小写 m表示多行显示 g表示全局搜索 / /img
举例:
varstr="http://www.runoob.com:80/html/html-tutorial.html";
varpatt1= /(\w+)://([/:]+)(:\d*)?([#]*)/;
第一个括号子表达式捕获 Web 地址的协议部分。该子表达式匹配在冒号和两个正斜杠前面的任何单词。第二个括号子表达式捕获地址的域地址部分。子表达式匹配 / 和 : 之外的一个或多个字符。第三个括号子表达式捕获端口号(如果指定了的话)。该子表达式匹配冒号后面的零个或多个数字。只能重复一次该子表达式。最后,第四个括号子表达式捕获 Web 地址指定的路径和 / 或页信息。该子表达式能匹配不包括 # 或空格字符的任何字符序列。
第一个括号子表达式包含"http"
第二个括号子表达式包含"www.runoob.com"
第三个括号子表达式包含":80"
第四个括号子表达式包含"/html/html-tutorial.html"
//常用 .*? .匹配一个字符 *一个或多个 ?零个或一个 i表示忽略大小写 m表示多行 g表示全局匹配
如:var reg=/src="(.*?.png)"/img;
[a-z]//匹配所有的小写字母
[A-Z]//匹配所有的大写字母
[a-zA-Z]//匹配所有的字母
[0-9]//匹配所有的数字
[0-9.-]//匹配所有的数字,句号和减号
[\f\r\t\n]//匹配所有的白字符
^a{2,4}$aa,aaa或aaaa
一个数字{x}的意思是前面的字符或字符簇只出现x次;一个数字加逗号{x,}的意思是前面的内容出现x或更多的次数;两个数字用逗号分隔的数字{x,y}表示前面的内容至少出现x次,但不超过y次
^[1-9][0-9]{0,}// 所有的正整数
^-{0,1}[0-9]{1,}// 所有的整数
^[-]?[0-9]+.?[0-9]+// 所有的浮点数
中括号表达式的典型用途是指定任何大写或小写字母或任何数字的匹配。 /[A-Za-z0-9]/
[^1-5] 匹配 1、2、3、4 或 5 之外的任何数字和字符
下面列出一些正则表达式示例:
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置。
/(\w+)://([/:]+)(:\d*)?([# ]*)/ 将一个URL解析为协议、域、端口及相对路径。
/<\s(\S+)(\s[^>])?>[\s\S]<\s/\1\s*>/ 匹配 HTML 标记。
正则m表示到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。
补充随机数
Math.ceil()向上取整
Math.floor()向下取整
Math.round() 四舍五入
Math.random()返回介于 0 ~ 1 之间的一个随机数。(0,1]
如果你希望生成1到任意值的随机数:
Math.floor(Math.random()max)+1;
如果你希望生成0到任意值的随机数:
Math.floor(Math.random()(max+1));
值= Math.floor(Math.random()*可能值的总数+第一个可能的值)