【问题标题】:Angular Form Input block (space) REGEX角形式输入块(空格)正则表达式
【发布时间】:2018-11-17 19:42:27
【问题描述】:

我的 Angular 组件中有一个输入字段,我希望不允许用户在其中输入(空格)。

我尝试过使用

<input type="text" [(ngModel)]="inputText" pattern="[a-zA-Z]">

这不是我想要的,而且它也不管用!

有谁知道阻止(空格)键的正确正则表达式模式是什么?以及使用该模式的正确方法是什么,因为上述模式不起作用......

提前致谢。

【问题讨论】:

  • 使用否定集:[^ ] 或者如果您想禁止每个空格字符:[^\s]
  • 这些答案是否为您解决了问题?

标签: regex angular


【解决方案1】:

使用 RegEx 仍将允许用户输入空格。但如果应用了模式验证器,它将将该字段标记为invald

如果您真的不想让用户首先输入空格,则必须通过监听输入上的keydown 事件然后对其进行处理以防止其默认行为来阻止它.来,试试这个:

&lt;input type="text" (keydown.space)="$event.preventDefault()"&gt;

这里还有一个Sample StackBlitz 供您参考。

【讨论】:

  • 很好的解决方案!您也可以使用简单的(keydown),然后调用一个函数来检查按下了哪个键盘键,并根据您的需要进行处理:)
【解决方案2】:

如果你想允许任何类型的字符除了空格之外没有任何字母,你可以使用这个: "^\w+( +\w+)*$"

如果您还想使用重音元音,您可以使用这个: "^[a-zA-Zá-úÁ-Ú0-9]+( +[a-zA-Zá-úÁ-Ú0-9]+)*$"

【讨论】:

    【解决方案3】:

    您可以使用以下模式:

    <input pattern="[^\s]*">
    
    • [^\s] 是一个否定集合,它匹配不在集合中的每个字符。
    • \s 匹配空白字符(例如空格、制表符等)
    • * 匹配前一项的 0 个或多个字符

    以下是浏览器如何检查模式是否正确的示例(例如,如果其中包含空格字符,Google Chrome 不允许您提交表单。在此处测试(输入包含白色的字符串)空格并点击Submit):

    <form>
      <input pattern="[^\s]*">
      <button type="submit">Submit</button>
    </form>

    【讨论】:

      【解决方案4】:

      解决此问题的最佳方法是编写可在多个位置使用的指令。

      这是相同的Stackblitz sample

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多