当前位置: 首页 > 面试题库 >

正则表达式仅接受字母和空格,并且在字符串的开头和结尾不允许使用空格

闻人栋
2023-03-14
问题内容

验证输入字段具有以下要求:

  1. 它只能包含字母以及字母之间的空格。
  2. 它不能在字符串的开头或结尾包含空格。
  3. 它不能包含任何其他特殊字符。

我为此使用以下正则表达式:

^(?!\s*$)[-a-zA-Z ]*$

但这是在开始时留有空格。任何帮助表示赞赏。


问题答案:

对我而言,唯一可行的方法是:

^\p{L}+(?: \p{L}+)*$

在字符串的开头,必须至少有一个字母。(我用[a-zA-Z]Unicode代码属性替换了letter
\p{L})。然后可以有一个空格,后跟至少一个字母,此部分可以重复。

\p{L}:来自任何语言的任何形式的信件。见regular-expressions.info

表达式中的问题^(?!\s*$)是,如果 在string的末尾 只有空格,则超前操作将失败。如果要禁止前导空格,只需删除lookahead
==>中字符串锚的末尾^(?!\s)[-a-zA-Z ]*$。但这仍然允许字符串以空格结尾。为避免这种情况,请回头看字符串的结尾^(?!\s)[-a-zA-Z ]*(?<!\s)$。但我认为对于此任务,无需四处看看。



 类似资料:
  • 我对这份清单有一个要求 开头和结尾处没有斜杠(/)、下划线(_)和空格() test-(不正确的)空格在结束测试-(正确的)空格在结束测试-(不正确的)空格在开始54test/-(不正确的)/在结束 /54test-(不正确的)/在开始54test/one-(正确的)54test one/my-(正确的)54test /my-(不正确的) 这是我目前的正则表达式,但我不能真正扩展它,因为我对正则表

  • 问题内容: 我希望正则表达式仅对字母和空格进行验证。基本上,这是为了验证全名。例如: Steve Collins先生或Steve Collins先生, 我尝试过此正则表达式。“ [a-zA-Z] + \。?” 但没有工作。有人可以帮我吗,请注意我使用Java。 问题答案: 关于什么: 彼得·米勒 弗朗索瓦·奥朗德 帕特里克·奥布莱恩 西尔瓦娜·科赫·梅林 验证名称是一个难题,因为有效名称不仅包含字

  • 问题内容: 我努力了: 但我猜我做错了什么。 问题答案: 1.使用PHP的内置ctype_alnum 您不需要为此使用正则表达式,PHP有一个内置函数可以为您执行此操作,并且执行速度更快: 2.或者,使用正则表达式 如果您非常想使用正则表达式,则有几种选择。 首先: 包含多个字母数字(包括下划线),但包含所有。 或者: 甚至只是:

  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 问题内容: 我希望用户仅输入字母或空格(如果用户输入其他字符),我想给jOptionPane消息,我已经搜索过,并且尝试了以下代码 但是现在无论我输入什么都会给出错误 现在我更改了代码 现在它仅在用户输入数字时发出消息。我该如何解决 问题答案: 使用一个,这是我制作的一个示例,它将仅接受字母字符和空格: