ng-pattern允许单词之间的空格

时间:2015-08-19 06:52:35

标签: javascript regex angularjs

我正在寻找一个regular expression来阻止特殊字符,并且只允许使用字母,数字,短划线( - ),下划线(_)空格

这个正则表达式效果很好,但它不允许单词之间的空格。

例如,如果输入"123 456",我会定义自定义错误。 除了字母,数字,短划线和下划线之外,我如何调整此注册表以允许单词之间的空格。

<input type="text" name="serialNumber" data-ng-model="SerialNumber" ng-pattern="/^[a-zA-Z0-9_-]*$/" maxlength="100"/>
<div data-ng-if="Form.serialNumber.$error.pattern" class="error">Please enter valid serial number</div>

6 个答案:

答案 0 :(得分:8)

我认为我为我的要求i.e. to allow alphanumeric, _, - and space. Space should be allowed between word and not leading and trailing space.

找到了一个非常简单和基本的解决方案
ng-pattern="/^[a-zA-Z0-9\_\- ]*$/"

有人发现问题,请告诉我。

答案 1 :(得分:5)

如果要在输入中允许空格,则需要将其包含在字符类中。

根据docs

  

<强> ngTrim   (可选)
  如果设置为false Angular将不会自动修剪输入。 input[type=password]控件忽略此参数,这些控件永远不会修剪输入。   
(默认:true)

因此,如果您的输入字段不是密码字段,我建议:

ng-pattern="/^[\w -]*$/"

\w代表JS中的[A-Za-z0-9_],下划线不必转义,字符类末尾的连字符也不需要转义。

答案 2 :(得分:0)

^[a-zA-Z0-9_-]+(?:\s+[a-zA-Z0-9_-]+)*$

以这种方式构建正则表达式,以便在开始或结束时捕获words而不是spaces

答案 3 :(得分:0)

您可以尝试以下基于正则表达式的正则表达式。

^(?!\s)(?=$|.*[a-zA-Z0-9_-]$)[a-zA-Z0-9_\s-]*$

答案 4 :(得分:0)

使用此模式解决问题

ng-pattern="/^(\D)+$/"

答案 5 :(得分:0)

pls ng-pattern =“ / ^ [\ w-] * $ /”