需要一个需要大写或小写字母的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属性
在上面列出的那些代码中,只有最后一行(ICU和Perl)严格且完全满足所有1级法规遵从性要求(加上一些2级和3级),以便在正则表达式中正确处理Unicode。然而,我在上一段中列出的所有项目符号都可以轻松处理您所需的大部分,很可能是全部

然而,Javascript并不在其中。不过,如果您非常幸运,并且永远不必在仅标准的Javascript平台上运行,那么您的版本可能会

总结 非常遗憾的是,除非您有一个非标准的扩展,否则就不能真正使用Javascript正则表达式来实现Unicode。有些人喜欢,但大多数人不喜欢。如果您不这样做,您可能不得不使用不同的平台,直到相关的ECMA标准赶上21世纪(Unicode 3.1十年前问世!!)


如果有人知道一个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年了,而且