【发布时间】:2015-09-13 10:47:42
【问题描述】:
感谢观看。
我的目标是提出一个正则表达式,它将匹配不包含数字、空格或符号 !@£$%^&*()+= 或我可以选择的任何其他符号的输入。
然而,我很难准确掌握正则表达式的工作原理。
我从简单的模式/\D/ 开始,据我了解,它将匹配它可以找到的第一个非数字字符。这将匹配正确的字符串“James”,但也匹配我不想要的“James1”。
所以,我的理解是,如果我想确保在给定字符串的任何地方都找不到模式,我使用^ 和$ 字符,如/^\D$/。现在因为这只会匹配一个不是数字的字符,所以我需要使用+ 来指定不应在整个字符串中找到 1 个或多个数字,给我表达式 /^\D+$/。太棒了,它不再匹配“James1”。
问题 1
到目前为止我的推理是否正确?
下一个要求是确保给定字符串中没有空格。 \s 将匹配单个空格,[^\s] 将匹配第一个非空格字符。因此,根据我的理解,我只需将其添加到我已有的内容中即可匹配不包含数字和空格的字符串。同样,因为[^\s] 只会匹配一个非空白字符,所以我使用+ 匹配一个或多个空白字符,给出/^\D+[^\s]+$/ 的新正则表达式。
这是我迷路的地方,因为表达式现在匹配“James1”甚至“James Smith25”。 什么?在这一点上非常困惑。
问题 2
为什么/^\D+[^\s]+$/ 匹配包含空格的字符串?
问题 3
我将如何编写我要解决的正则表达式?
虽然我热衷于解决问题,但我更感兴趣的是找出我对正则表达式的理解不足的地方,因此任何解释都会有所帮助。
【问题讨论】:
标签: javascript regex