正则表达式学习汇总

1.匹配以数字开头,并以 abc 结尾的字符串。:

var str = "123abc";
var patt1 = /^[0-9]+abc$/;
document.write(str.match(patt1));

以下标记的文本是获得的匹配的表达式:

123abc
知识点:
^ 为匹配输入字符串的开始位置。字符串的首个字母

[0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。

abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。
2.我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符(-),并设置用户名的长度,我们就可以使用以下正则表达式来设定。
{} 表示长度
3.+  *  ?的区别
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。

runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。

colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次)。

4.特别字符

特别字符    描述
$    匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '
''
'。要匹配 $ 字符本身,请使用 $。
( )    标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
*    匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 *+    匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。
.    匹配除换行符 
 之外的任何单字符。要匹配 . ,请使用 . 。
[    标记一个中括号表达式的开始。要匹配 [,请使用 [。
?    匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 ?。
    将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n''
' 匹配换行符。序列 '\' 匹配 "",而 '(' 则匹配 "("
^    匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 ^。
{    标记限定符表达式的开始。要匹配 {,请使用 {。
|    指明两项之间的一个选择。要匹配 |,请使用 |。

5.以下正则表达式匹配一个正整数,[1-9]设置第一个数字不是 0,[0-9]* 表示任意多个数字:

 /[1-9][0-9]*/

6.如果你想设置 0~99 的两位数,可以使用下面的表达式来至少指定一位但至多两位数字。

/[0-9]{1,2}/

上面的表达式的缺点是,只能匹配两位数字,而且可以匹配 0、00、01、10 99 的章节编号仍只匹配开头两位数字。

改进下,匹配 1~99 的正整数表达式如下:

 

/[1-9][0-9]?/

/[1-9][0-9]{0,1}/

7.定位符

字符    描述
^    匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 
 或 
 之后的位置匹配。
$    匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 
 或 
 之前的位置匹配。
    匹配一个单词边界,即字与空格间的位置。
B    非单词边界匹配。

8.ctf题目

通过读代码可以看出只要我们构造出符合正则表达式的字符串通过GET传参传过去就可以看到 key 即 flag

通过这道题看了很多正则表达式的语法规则……

首先分析这道题:

定界符:/和/(一般来说是这两个,其实除了和字母数字其它的只要是成对出现都可以看做定界符,比如##、!!之类的);

. (一个点):表示可以匹配任何字符;

*   :前面的字符重复零次或多次;

{n,m} :前面的字符重复4~7次;

(反斜线):后面的字符被转义;

[a-z] :在a到z中匹配 ;

[[:punct:]] :匹配任何标点符号;

/i  :表示这个正则表达式对大小写不敏感;

至此,我们可以对这道题的正则表达式进行构造。

例如:keyakeyaaaakey:/a/aakeyb!

有很多只要符合都可以

原文地址:https://www.cnblogs.com/trevain/p/14273565.html