需要一个需要大写或小写字母的JavaScript正则表达式
我有一个正则表达式,现在只允许小写字母,我需要一个需要小写或大写字母的正则表达式:需要一个需要大写或小写字母的JavaScript正则表达式,javascript,regex,Javascript,Regex,我有一个正则表达式,现在只允许小写字母,我需要一个需要小写或大写字母的正则表达式: /(?=.*[a-z])/ 试试/(?=.[a-z])/i 请注意结尾的i,这会使表达式不区分大小写。或在正则表达式中添加大写范围: /(?=.*[a-zA-Z])/ 不确定您指的是混合大小写,还是严格小写加严格大写 以下是混合案例版本: /^[a-zA-Z]+$/ 严格来说,一个或另一个版本: /^([a-z]+|[A-Z]+)$/ 你不能从这里到那里 我现在有一个只允许小写字母的正则表达式,我需要一个
/(?=.*[a-z])/
试试/(?=.[a-z])/i
请注意结尾的i,这会使表达式不区分大小写。或在正则表达式中添加大写范围:
/(?=.*[a-zA-Z])/
不确定您指的是混合大小写,还是严格小写加严格大写 以下是混合案例版本:
/^[a-zA-Z]+$/
严格来说,一个或另一个版本:
/^([a-z]+|[A-Z]+)$/
你不能从这里到那里
我现在有一个只允许小写字母的正则表达式,我需要一个需要小写或大写字母的正则表达式:/(?=.[a-z])/
不幸的是,它是!阅读Javascript所不能做的一切
理论与实践
小写的正确模式是标准的Unicode派生二进制属性\p{lowercase}
,大写的正确模式类似于\p{uppercase}
。这些是规范性属性,在某些特殊情况下,这些属性中有时包含非字母
仅使用常规类别属性,就可以对小写字母使用\p{Ll}
,对大写字母使用\p{Lu}
,对标题字母使用\p{Lt}
。请记住,它们是Unicode中的三种情况,而不是两种情况)。有一个标准别名\p{LC}
,意思是[\p{Lu}\p{Lt}\p{Ll}]
如果希望字母不是小写字母,可以使用(?=\p{Ll})\pL
。用正楷书写,即(?=\P{Lowercase_Letter})\P{Letter}
。同样,它们混合了\p{Lowercase}
识别的一些其他字母小写代码点。我必须再次强调,小写属性是小写字母属性的超集
还记得上一段吗,在我写下的每一个地方都换上大写字母,大写字母也一样
可能的平台
由于对这些基本属性的访问是实现这些基本属性所必需的最低级别的关键功能,所以某些版本的Javascript使用我上面编写的方式实现它们。但是,Javascript标准仍然不需要它们,因此一般来说,您不能指望它们。这意味着在所有Javascript实现下都不可能正确实现这一点
您可以使用的语言包括:
- C♯ 和Java(均为一般类别)
- Ruby当且仅当v1.9或更高版本(仅二进制属性,包括常规类别)
- PHP和PCRE(仅通用类别和脚本属性加上几个附加属性)
- ICU的C++库和Perl,它们都支持所有Unicode属性
如果有人知道一个Javascript库实现了包含和的1级要求,请插话 你知道这个正则表达式相当于
/[a-z]/
,并且匹配每个至少包含一个小写字母的字符串吗?另外,如果你要放弃(?=
)捕获,括号还有什么用?@delnan:[a-z]
无法匹配1723个小写字母,并且无法匹配1882个小写代码点。基本上,几乎每次你看到有人写a-z,他们都搞砸了。@tchrist:不太清楚你想告诉我什么。是的,美国以外的所有软件都应该了解unicode,并可能使用它。(而我的代码是,据我所知)。但是,如果规范说“ASCII小写字母”,那就是正则表达式必须匹配的。所以,不,<代码> [AZ] < /代码>不一定是“你永远失败了”。像Nave&façade(与弃权和拱廊完全不同)这样的常规词汇和像Zoë&Reneée这样的名字都已经非常牢固地确立了,像厄尔尼诺和卡尼翁城这样的其他词汇可能会留下来。gypt、拱门学、拱门学、艺术学、罗勒、潘、学习、协调、总结、选择、普莱米尔和装饰都曾经是标准——有时仍然是。然后考虑标点符号:奥雷利,夏威夷,“爱荷华-威斯康星”,联合国。现在看到大问题了吗?好的电话,我不认为第二个版本是被要求的。我把锚定在第二个版本中(<代码> ^([aZ++[aZ+])$< /代码>),但是我建议不要。1@Leigh当前位置我不确定,问题只是不清楚。我在这里看到了各种各样的问题:-)@delnan:说得好,我将在中编辑它。我没有正确思考。:-)实际上,我觉得Platinum Azure在这里给出了更好的答案。该模式与1723个小写字母不匹配。尽管如此,OP还是接受了你的答案,因为它回答了他/她的问题。随它去吧:-)这不是匹配大写字母的方式。或者小写字母。这是一种可怕的20世纪60年代的方法。它至少已经过时20年了,而且