当前位置: 首页 > 知识库问答 >
问题:

使用java中的正则表达式条件验证Customer Name数组

韩博厚
2023-03-14

我需要验证客户名称,java中的条件很少(仅使用正则表达式验证)。客户名称将位于字符串数组中并传递给方法。验证客户(字符串 [] 名称应验证客户名称,并仅返回数组中的有效客户名称。验证客户名称的标准如下。

    < li >名称只能包含字母和空格。 < li >每个单词应该用空格分隔,并且名称不应该以空格开头或结尾。 < li >名称中每个单词的第一个字符应该是大写字母。 < li >不应允许使用特殊字符。 < li >名称的长度应该在2到75个字符之间。

由于条件可以稍后更新,我只需要正则表达式验证,而无需使用任何其他方法,如 String.length()。

我尝试了几个正则表达式,但是在某些情况下失败了。尝试了一个样本

[((([A-Z][a-zA-Z])([+\\s]?[A-Z][a-zA-Z]*))]{2,75}

共有2个答案

上官迪
2023-03-14

您的正则表达式错误:

┌─ Definitely wrong!! Remove this
│               ┌─ Missing '*' to allow 1 to many words
│               │   ┌ '+' should not be allowed
│               │   │  ┌ Only space allowed, not other whitespace characters
│               │   │  │ ┌ Space is required between words, so remove '?'
│               │   │  │ │              ┌ Missing '*' to allow 1 to many words
│               │   │  │ │              │ ┌ Definitely wrong!! Remove this
│               │   │  │ │              │ │
[((([A-Z][a-zA-Z])([+\\s]?[A-Z][a-zA-Z]*))]{2,75}

您想要的:

┌─ Must be 2-75 characters long (positive lookahead)
│          ┌─ Word must be uppercase letter
│          │    ┌─ followed by 0 or more letters
│          │    │        ┌─ followed by 0 or more words separated by single space
(?=.{2,75})[A-Z][a-zA-Z]*(?: [A-Z][a-zA-Z]*)*

上面的正则表达式必须与 matches() 一起使用。如果要与 find() 一起使用,它需要 ^$ 锚点。

上面的正则表达式只允许A-Z字母。要支持国际字母,如ñ,请改用以下方式:

(?=.{2,75})\p{Lu}\p{L}*(?: \p{Lu}\p{L}*)*

在Java字符串文字中使用时,请记住将< code>\加倍。

唐信瑞
2023-03-14

您可以使用

^(?=[a-zA-Z\\h]{2,75}$)[A-Z][a-zA-Z]*(?:\\h+[A-Z][a-zA-Z]*)*$
  • ^字符串的开始
  • (?=[a-zA-Z\\h]{2,75}$)断言2-75个字符a-zA-Z或水平空格
  • [A-Z][a-zA-Z]*匹配大写字符A-Z和可选字符a-zA-Z
  • (?:\\h[A-Z][a-zA-Z]*)*重复前面的1个水平空格
  • $字符串结束

正则表达式演示

如果您想要一个单独的空间:

^(?=[a-zA-Z ]{2,75}$)[A-Z][a-zA-Z]*(?: [A-Z][a-zA-Z]*)*$

正则表达式演示

 类似资料:
  • 问题内容: 我正在使用以下正则表达式 它接受#@#.com作为有效电子邮件。我应该使用什么模式? 问题答案: 您应该使用apache- commons电子邮件验证程序。您可以从此处获取jar文件。 这是一个简单的用法示例:

  • 本文向大家介绍请用正则表达式验证数字相关面试题,主要包含被问及请用正则表达式验证数字时的应答技巧和注意事项,需要的朋友参考一下 /[0一9]*$/

  • 在我的rails应用程序中,我想验证包含任意数量关键字的字符串字段上的输入(可以是多个自然语言单词(例如“文档编号”)。为了识别各个关键字,我输入它们,以“,”分隔(或以字符串结尾获取它们的结尾)。 为此我用 它应该允许属性关键字(字符串)包含:“word1、word2、word3 word4、word5-word6” 它不允许使用任何其他模式。e、 g.非“word1;word2;”它确实错误地

  • 我需要检查密码是否至少包含: 一个号码 一个小写字符 一个大写字符 一个特殊符号(.,@etc) 我在C#中有以下内容: 但这并不有效: 我错过了什么? 更新 我正在将其与系统.组件模型.数据注释一起使用来验证模型属性:

  • 主要内容:标签属性,JSF验证整数范围实例标签用于将字符串值验证为所需格式。 以下代码显示如何使用标记。 标签属性 属性 说明 pattern 格式化模式 JSF验证整数范围实例 打开 NetBeans IDE 创建一个Web工程:ValidateRegularExpression,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:result.xhtml 的代码内容如下所示 - 文件:

  • 我有以下用于javascript密码验证的正则表达式: 正则表达式规则是: 12-25个字符 至少有一个大写字母 至少有一个小写字母 至少有一个数字 至少有一个特殊字符:!#$%()*,-./:;=?@[]^ `{124;}~ 然而,正则表达式似乎不起作用。它匹配任何字符。我该怎么解决这个问题?