我正在寻找一个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>
答案 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-] * $ /”