我需要以下面的格式验证建筑物名称(长度为1-50)
我的字母数字和指定字符的正则表达式
/^[a-zA-Z0-9\s\)\(\]\[\._-&]+$/
它显示无效的表达但是当我排除&它工作正常。
/^[a-zA-Z0-9\s\)\(\]\[\._-]+$/
实际格式
- 建筑物名称应使用Letters,Numbers,Underscore_,Hyphen-,Period。,Square-bracket [],圆括号(),&符号&
- 不应该连续开始和结束任何特殊字符
醇>
有效:
无效:
我正在努力争取第二种格式。如何在第一个和最后一个检查连续允许的特殊字符。很感谢任何形式的帮助。
答案 0 :(得分:2)
转义-
字符:
/^(?!\W.+\W$)[a-zA-Z0-9\s\)\(\]\[\._\-&]+$/
在字符类中,-
字符表示一系列字符(例如1-9
)。由于&
的ASCII代码小于_
,因此正则表达式无法正确解析。
另外,要检查开头或结尾没有特殊字符,请在前瞻中使用\W
(字母,数字或下划线以外的字符)来检查开头和结尾都不是“特殊字符”。如果您将下划线计为特殊字符,请使用[^A-Za-z0-9]
代替\W
。
var validBuildingName = /^(?!\W.+\W$)[a-zA-Z0-9\s\)\(\]\[\._\-&]+$/;
validBuildingName.test('(example)'); // false
validBuildingName.test('(example'); // true
validBuildingName.test('example)'); // true
validBuildingName.test('example'); // true