【问题标题】:Regex pattern in Typescript打字稿中的正则表达式模式
【发布时间】:2019-04-25 00:51:31
【问题描述】:

此模式有效,但与我的预期相反,我该如何更改它,以便当我匹配模式时,它会导致错误?谢谢。

   <mat-form-field style="text-align: center">
                <input type="text" pattern="^([aA]\d{6})" placeholder="id" matInput="text" formControlName="id"
                  name="id" required> 
              </mat-form-field>

【问题讨论】:

  • 使用pattern="^(?![aA]\d{6}$).*"
  • @WiktorStribiżew 谢谢你,这行得通。

标签: regex typescript pattern-matching angular2-forms


【解决方案1】:

您当前的模式匹配以aA 开头的字符串,然后严格包含6 位数字。 ^pattern 正则表达式中是多余的,因为它是默认锚定的。

所以,事实上,当前的正则表达式是^[Aa]\d{6}$,你可以使用反向 HTML5 模式

pattern="(?![aA]\d{6}$).*"

此模式将被解析为/^(?:(?![aA]\d{6}$).*)$/ 模式(在 Chrome、Firefox 和其他支持此功能的浏览器中使用 u 修饰符)。

(?![Aa]\d{6}$) 否定前瞻将使任何以 aA 开头且结尾有 6 位数字的字符串失败。

.* 匹配任何 0+ 个字符。使用 .+ 匹配任何 1 个或多个字符。这部分是必需的,因为 HTML5 正则表达式应该匹配整个输入。

HTML5 演示:

input:valid {
  color: black;
  border: 5px solid #dadadada;
  border-radius: 7px;
}
input:invalid {
  color: navy;
  outline: none;
  border-color: #ff1050;
  box-shadow: 0 0 10px #ff0000;
}
<form name="form1"> 
 <input pattern="(?![aA]\d{6}$).*" title="Please enter a valid string." placeholder="Please enter valid text" />
 <input type="Submit"/> 
</form>

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 2017-07-18
    • 2018-01-21
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多