Regex 正则表达式中的^.*和.*$是什么?
有人能解释一下这些字的意思吗。我已经查过了,但似乎不明白 整个正则表达式是:Regex 正则表达式中的^.*和.*$是什么?,regex,Regex,有人能解释一下这些字的意思吗。我已经查过了,但似乎不明白 整个正则表达式是: /^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/ 所以基本上是正则表达式的开头和结尾字符。 表示“任何字符” *表示“任意数量” 因此,*表示任意长度的任意字符串 ^指示字符串的开头 $表示字符串的结尾 正则表达式表示:表达式(?=.{8,})(?=.[a-z])(?=.[a-z])(?=.[@$%^&+=])和搜索的字符串的开头和结尾之间可以有
/^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/
所以基本上是正则表达式的开头和结尾字符。
表示“任何字符”
表示“任意数量”*
- 因此,
表示任意长度的任意字符串*
指示字符串的开头^
表示字符串的结尾$
正则表达式表示:表达式
(?=.{8,})(?=.[a-z])(?=.[a-z])(?=.[@$%^&+=])
和搜索的字符串的开头和结尾之间可以有任意数量的字符。^
匹配字符串的开头
$
匹配结尾
*
是任意数量的字符这与行的开头(^)后跟任意字符(.*)相匹配:
这与前面有任何字符(.*)的行尾($)相匹配:
所以当你看到这个
(?=.*[@#$%^&+=]).*$
它允许任何字符(断行除外)位于(?=.*[@#$%^&+=])
和字符串结尾之间
要显示
与任何字符都不匹配,请尝试以下操作:
/./.test('\n'); is false
要真正匹配任何字符,您需要类似于[\s\s]
的内容
/[\s\S]/.test('\n') is true
主要文件:
还有一些我将来可以帮助你的东西:
.*$
将匹配两次给定此字符串:“1”
如果你想知道为什么,那是因为它消耗了所有字符,但也没有匹配任何字符。因此,空字符串也是一个匹配项。这看起来像一个典型的密码验证正则表达式,只是有几个错误。首先,开头的
*
不属于那里。如果这些lookahead中的任何一个在字符串开头没有成功,那么在下一个位置或下一个位置再次应用它们就没有意义了,等等
第二,虽然正则表达式确保这三种字符中的每一种都存在,但它没有说明字符串的其余部分。这可能是一个深思熟虑的选择,但人们通常试图确保只有这些类型的人物在场。在这种情况下,您需要将第一个前瞻从(?=.{8,})
更改为(?=[A-Za-z@$%^&+=]{8,}$)
最终结果:
/^(?=[A-Za-z@#$%^&+=]{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/
谢谢你的回答。为什么要在最后重复。*?因为在最后一次“特定”匹配之后,文本行中可能有字符。每个人的回答都是正确的。我想补充一点,它们是无用的
/^.*(…).$/
与/(…)/
完全相同。为什么我们需要在reg ex的开头和结尾使用“/”?幸好没有第十件事需要提示。;)回答得很好!你能为reg ex推荐好的备忘单吗?还有,为什么OP在开始和结束时都放“/?
/[\s\S]/.test('\n') is true
/^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/
12345 6 7 89
1 - start of pattern, can be almost any character, and must have a matching character at the END of the pattern (see #9 below)
2 - anchors the pattern to the start of a line of text
3 - `.` matches any character
4 - a modifier, "0 or more of whatever came before"
- `.*` means "0 or more of ANY characters"
5 - A positive lookahead assertion: http://www.php.net/manual/en/regexp.reference.assertions.php
6 - A repetition indictor: http://www.php.net/manual/en/regexp.reference.repetition.php
- `{8,}` = "at least 8 of whatever came previously"
- `.{8,}` = "at least 8 'any' characters"
7 - A character class: http://www.php.net/manual/en/regexp.reference.character-classes.php
- `[a-z]` - any one character in the range 'a' - 'z' (the lower case alphabet)
8 - anchors the pattern to the end of the line
9 - end of the pattern, must match character used in #1 above.
.*$
/^(?=[A-Za-z@#$%^&+=]{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/