我正在尝试使用正则表达式创建一个函数,该函数可以确定我的字符串值是否正确。true
如果字符串以小写或大写字母字符或下划线开头,则应为。如果以任何其他开头,则该函数必须返回false
。
我的测试输入是这样的: ".dasfh"
表达式,我尝试使用的表达式:[_a-zA-Z]
...,[:alpha:]
...,但是它们都返回true。
我还尝试了一些简单的任务:
"Hadfg"
表达式在哪里[a-z]
...:返回true
但
"hadfg"
表达式在哪里[A-Z]
...:返回false
有人可以帮助我了解这种行为吗?
您试图将字符串中的第一个字符特别匹配,这意味着您必须告诉regex,它必须是字符串中的第一个字符。
正则表达式引擎只是尝试在整个字符串中查找任何匹配项。
您所要告诉的[a-z]
只是“在字符串中的任意位置找到一个小写字符”。这意味着:
"Hadfg"
等于true,因为它可以找到a,d,f或g作为匹配项。"HADFG"
等于false,因为没有小写字母。
例如,"hADFG"
与之匹配时也会发生同样[A-Z]
的情况,它将能够找到A,D,F或G作为匹配项,而"hadfg"
由于没有大写字符,它将返回false。
您要在这里找到的是^
正则表达式,它是一种特殊的修饰符,表示“行首”
因此,当将其应用于正则表达式时,它将如下所示:/^[a-z]/
。
前一行的正则表达式基本上说:“从字符串的开头开始,第一个字符跟在小写字母a之后吗?”
试试看,您会看到的。
对于您的解决方案,您需要/^[_a-zA-Z]/
检查第一个字符是_,az还是AZ字符。
作为参考,您可以在这些工具中找到备忘单(并使用它来测试您的正则表达式!)
对于参考或教程(如果您想开始了解regexp及其工作方式,建议您从头到尾阅读),其中有regular-expressions.info。
正则表达式从来都不是一件容易的事,要小心使用它,它是一种功能强大但有时很难处理的野兽:)
聚苯乙烯
我看到您将您的问题标记为“电子邮件验证”,因此我将添加一些额外的正则表达式,以验证电子邮件地址绝对正确的最低要求,我个人使用:
.+@.+\..{2,}
当分解时,它看起来像这样:
.+
-任何一个或多个字符
@
-后跟文字@字符
.+
-任何一个或多个字符
\.
-后跟文字。字符
.{2,}
-任何字符中的两个或多个
可选的,你可以替换{2,}
使用+
,使之一个或多个但是这将允许TLD与1个字符。
要查看工作中的RFC电子邮件正则表达式,请检查此链接。当我看那个正则表达式时,我基本上只是想在某个角落哭泣,肯定有些事情是我的正则表达式没有解决的,但您至少可以确保它看起来像可通过电子邮件发送的内容无论如何,如果一个新用户决定填写一些公牛,这不再是我的问题,并且我不想因为巨大的正则表达式也不同意而强迫他们更改那个1字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句