感谢所有回复的人。
我想我必须稍微调整一下我的第一个问题。由于 $ 符号的定义,我有点困惑。它只是断言字符串的末尾有 6 到 10 个单词字符。
而已!正确的?然后,我认为它必须与我的测试字符串匹配"123a56A781231231231241"
。因为它不违反规则! 字符串开头和结尾处的 6-10 个单词字符。完美,不是吗?
^(?=\w{6,10}$)
另外,我想知道和之间的区别^(?=\w{6,10})$
。
还有一个,Casimir et Hippolyte你说+ 不会改变任何东西,这仅意味着量词(这里的 {6,10} )是所有格并且不允许回溯。 这是否意味着 + 符号使 $ 符号禁用?
提前谢谢你们。
在我继续之前,我想让你们知道,距离我开始学习正则表达式只有两天时间。我完全是新手。
第一的。^(?=\w{6,10}$)
这是模式。为什么美元信号必须在里面()
?我知道这是一个愚蠢的问题,但我很好奇。我试图在()
. 但它并没有像我预期的那样工作。
第二。我找到了几个教程网站,上面写着美元符号的意思
"
$
可能出现在模式的末尾以要求匹配出现在一行的最后。例如,abc$
匹配123abc
但不是abc123.
"
So$
用于断言字符串的匹配部分位于行尾。正确的?
如果这是真的,为什么这个模式:"^(?=\w{6,10}$)"
不能与我的测试字符串匹配:"123a56A781231231231241"
。
如您所见,我的测试字符串在行首包含 6~10 个单词字符,在行尾包含 6~10 个单词字符。
第三。正如我之前提到的,这种模式:^(?=\w{6,10}$)
无法与我的测试字符串匹配:"123a56A781231231231241"
但是!如果我在喜欢+
的后面添加标志,
它就可以工作。是因为符号是所有格吗?我的意思是,据我所知,+ 号告诉引擎一旦进行匹配就不要回溯。所以我冒险猜测,$ 符号没有做他的工作,因为它甚至不做回溯(我不确定这一点,当然,因为我不知道 $ 符号后面是如何工作的)。这样对吗?\w{6,10}
^(?=\w{6,10}+$)
+