>我需要在 HTML 输入中使用此正则表达式(取自正则表达式,用于逗号或逗号和空格分隔的项目列表(:
[^,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。
您需要
从逗号之前删除转义反斜杠并使用
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>