所以有很多问题,并通过一些过滤,我仍然不知道如何去做...
模式:
我有
pattern="[A-z]{3,}"
这给了我一切,除了我只限于一个词......: - (
编辑:让我更清楚一点,我希望验证能为我实现......
我用它来捕捉一个人的名字。但是我不想要任何特殊的字符或数字,所以没有“John Doe Jr.”,因为'。'将被拒绝,但我希望能够捕获双重甚至单个字符部分,同时保持“全局”3字符最小限制......
答案 0 :(得分:3)
为了允许空格,您所要做的就是为您拥有[A-z]
的角色模式添加空格。
所以它变成了:
pattern="[A-z ]{3,}"
希望有所帮助。
但请注意,这将阻止其他类型的空格字符。我认为这是你想要的,因为你对字符集的其余部分有很大的限制,但值得指出的是,上面会阻止不间断的空格,回车和其他空格。如果您想允许它们,请使用\s
而不是空格:这将匹配任何空格字符。
最后,值得指出的是,即使是纯英文文本,标准字母表也常常不够用。有效的英语单词带有重音符号,以及撇号和其他标点符号。你没有说明该字段的用途,所以我认为这不是问题,但我觉得值得指出。
答案 1 :(得分:2)
很难看出问题是什么。您正在匹配字符串,而不是一组单词。 如果你的模式是“一个单词列表,每个单词只按字母顺序排列并用空格分隔”,那么正则表达式将是
([A-Za-z]{3,}\\s*)+
编辑回答更新的问题。
[A-Za-z\\s]*([A-Za-z]{3,})+[A-Za-z\\s]* (works in Java)
答案 2 :(得分:1)
pattern = "[A-z\s]{3,}"
怎么样?