Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式_Php_Regex - Fatal编程技术网

PHP正则表达式

PHP正则表达式,php,regex,Php,Regex,此正则表达式只允许字母数字字符和一个句点。我还没有弄清楚如何设置一个量词,将字符数限制在5到20之间。我在PHP中使用它 /^([a-zA-Z0-9\.](?!\.)|[a-zA-Z0-9]*\.(?!\.))[a-zA-Z0-9]*$/ 使用{/code>

此正则表达式只允许字母数字字符和一个句点。我还没有弄清楚如何设置一个量词,将字符数限制在5到20之间。我在PHP中使用它

/^([a-zA-Z0-9\.](?!\.)|[a-zA-Z0-9]*\.(?!\.))[a-zA-Z0-9]*$/
使用
{/code>
量词进行至少
n
和最多
m
重复。

使用
量词进行至少
n
和最多
重复。<

/^[a-zA-Z0-9]{5, 20}$/
使用

我在“展望”中的句点后添加了问号,使其成为可选的。我对正则表达式的理解是否正确?具体地说,我是否正确地指出,前瞻末尾的美元符号搜索从字符串末尾开始的前瞻?除了正则表达式的末尾,我在任何地方都没见过美元符号。谢谢你的帮助



我在“展望”中的句点后添加了问号,使其成为可选的。我对正则表达式的理解是否正确?具体地说,我是否正确地指出,前瞻末尾的美元符号搜索从字符串末尾开始的前瞻?除了正则表达式的末尾,我在任何地方都没见过美元符号。谢谢您的帮助。

所有特殊字符都已删除。我现在将正则表达式放入代码框中,这样就可以了。特殊字符现在应该会回来。当你添加你想要保留的代码或文本时,你可以突出显示它并点击带有二进制图标的“代码示例”按钮,或者使用CTRL+KAll删除特殊字符。我现在把正则表达式放在代码框中,这样就可以了。特殊字符现在应该回来了。当您添加想要保留的代码或文本时,您可以突出显示该代码或文本,然后单击带有二进制图标的“代码示例”按钮,或者使用CTRL+K这是显而易见的答案,但是要把它应用到它的例子中是很棘手的。是的,我很难应用量词。@Gumbo我希望正则表达式匹配字母数字字符和一个句点。句点可以在字符串中的任何位置,但只允许一个句点。@Gumbo,对不起,我的意思是:我希望正则表达式匹配一个字母数字字符字符串和一个句点。句点可以是字符串中的任意位置,但只允许一个句点。字符串必须介于五到二十五个字符之间。在使用PCRE时,可以使用前瞻性断言:
/^(?=[^.]*\.[^.]*.[^.]*$)[a-zA-Z0-9.]{5,25}$/
。这是明显的答案,但是要把它应用到它的例子中是很棘手的。是的,我很难应用量词。@Gumbo我希望正则表达式匹配字母数字字符和一个句点。句点可以在字符串中的任何位置,但只允许一个句点。@Gumbo,对不起,我的意思是:我希望正则表达式匹配一个字母数字字符字符串和一个句点。句点可以是字符串中的任意位置,但只允许一个句点。字符串必须介于五到二十五个字符之间。使用PCRE时,可以使用先行断言:
/^(?=[^.]*\.[^.]*.[^.]*$)[a-zA-Z0-9.]{5,25}$/
。先行从字符串的开头开始匹配(因为它就在
^
锚点之后);
$
确保它始终匹配字符串的末尾,与往常一样。但一旦完成了前瞻,匹配位置将返回到字符串的开头,这样正则表达式的下一部分就可以在那里开始匹配。先别提了,你是对的,美元符号除了正则表达式的结尾外,在任何地方都不有用。顺便说一下,这是你第一次提到句号是可选的。有没有其他你没有提到的要求?例如,如果句点存在,是否允许它显示为字符串中的第一个或最后一个字符?谢谢。你解释它的方式帮助我更好地理解正则表达式。有时,解释的结构很好,这对经验较少的人有利。我意识到我没有提到句号是可选的,但我想加上问号会使它成为可选的。是,允许句点出现在开头或结尾。这个正则表达式与我所做的测试中的正则表达式相匹配。你使用在线正则表达式工具吗?我见过一些,但我不确定它们是否正常工作。我承认,虽然我没有给他们太多时间。我主要是用我的脚本来测试。一个look aead断言就像你在读一本书,你想看看接下来几段/几页的内容。您正在为当前位置添加书签,请先阅读,然后返回书签位置。在这个例子中,我将
$
放在了“前瞻”中,这意味着你只想知道你必须为家庭作业阅读的枯燥的书何时结束;
$
确保它始终匹配字符串的末尾,与往常一样。但一旦完成了前瞻,匹配位置将返回到字符串的开头,这样正则表达式的下一部分就可以在那里开始匹配。先别提了,你是对的,美元符号除了正则表达式的结尾外,在任何地方都不有用。顺便说一下,这是你第一次提到句号是可选的。有没有其他你没有提到的要求?例如,如果句点存在,是否允许它显示为字符串中的第一个或最后一个字符?谢谢。你解释它的方式帮助我更好地理解正则表达式。有时,解释的结构很好,这对经验较少的人有利。我意识到我没有提到句号是可选的,但我想加上问号会使它成为可选的。是,允许句点出现在开头或结尾。这个正则表达式与我所做的测试中的正则表达式相匹配。你用的是o吗
/^ ---------> search starting at the beginning for
( ----------> begin group that consists of
?= ---------> looking ahead for
[^.]* ------> no periods any number of times
\.? --------> followed by a period optionally (?) then
[^.]* ------> no periods any number of times
$ ----------> search starting at the end of the string for contents of the group
) ----------> end group
[a-z0-9.] --> a letter number or period
{5,25} -----> five to twenty five times
$ ----------> search starting at the end of the string for the whole previous pattern
/i ---------> case insensitive