HTML5输入模式

时间:2017-03-28 13:51:32

标签: javascript angularjs regex

我需要在HTML输入中使用此正则表达式(取自Regular expression for a list of items separated by comma or by comma and a space):

[^,\s][^\,]*[^,\s]*

所以我在输入中设置它:

<input type="text" class="form-control" id="input" name="input" data-ng-model="myModel" pattern="[^,\s][^\,]*[^,\s]*">

但我在控制台中收到此错误:

Pattern attribute value [^,\s][^\,]*[^,\s]* is not a valid regular expression: Uncaught SyntaxError: Invalid regular expression: /[^,\s][^\,]*[^,\s]*/: Invalid escape

正则表达式有什么问题?

我正在使用Angular 1.5 BTW。

1 个答案:

答案 0 :(得分:1)

您需要从逗号前删除转义反斜杠并使用

 pattern="[^,\s][^,]*[^,\s]*"

由于FF和Chrome使用ES6正则表达式语法规范编译pattern正则表达式,因此在编译RegExp对象时使用/u修饰符是必要的。这对模式提出了一些限制。在这种情况下,在字符类中转义了常规符号,而不是特殊元字符,逗号。因此,删除逃脱解决了这个问题。

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>
  <input type="text" class="form-control" id="input" name="input" data-ng-model="myModel" pattern="[^,\s][^,]*[^,\s]*">
</form>