【问题标题】:Regex for no white space at the beginning and at the and and only one in between正则表达式在开头和之间没有空格,并且只有一个空格
【发布时间】:2021-07-09 11:54:19
【问题描述】:

我正在创建一个用户输入表单,用户可以在其中输入他的姓名,并且我想将正则表达式用于以下模式:

^[A-Za-z_äÄöÖüÜß_.-]*

它只应该接受上面的字母,如果有点,如果有斜线。

此外,我希望它接受空格,但不是在开头,也不是在结尾,名称部分之间只有一个空格。

例如如果用户的名字是 Dora F. T. Kov 它应该是有效的。

如果我将 \\s 添加到我的正则表达式中,它允许在我的字符串中的任意位置使用任意数量的空格。

如何根据上述概念重写它?

非常感谢您!

【问题讨论】:

  • 您必须在一个正则表达式中完成所有操作吗? input.matches("[A-Za-z_äÄöÖüÜß_.-]*") && input.trim().equals(input) 会起作用。

标签: java regex


【解决方案1】:

怎么样:

^[A-Za-z_äÄöÖüÜß_.-]+(?: [A-Za-z_äÄöÖüÜß_.-]+)*$

See regex demo

  1. ^ - 匹配字符串的开头
  2. [A-Za-z_äÄöÖüÜß_.-]+ 匹配这些允许的字符中的一个或多个
  3. (?: [A-Za-z_äÄöÖüÜß_.-]+)* - 后跟 0 次或多次出现:单个空格后跟一个或多个允许的字符。
  4. $ - 匹配字符串结尾

【讨论】:

    【解决方案2】:

    试试:^[A-Za-z_äÄöÖüÜß_.-]*(?: [A-Za-z_äÄöÖüÜß_.-]*)*$

    看到它在工作here

    【讨论】:

    • 非常感谢!不幸的是,它允许任何地方和任何数量的空间。
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2020-05-09
    • 2021-01-11
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多