给定格式的正则表达式 - 以字母数字开头和结尾

时间:2013-12-26 12:35:22

标签: javascript regex

我需要以下面的格式验证建筑物名称(长度为1-50)

我的字母数字和指定字符的正则表达式

     /^[a-zA-Z0-9\s\)\(\]\[\._-&]+$/

它显示无效的表达但是当我排除&它工作正常。

     /^[a-zA-Z0-9\s\)\(\]\[\._-]+$/   

实际格式

  
      
  1. 建筑物名称应使用Letters,Numbers,Underscore_,Hyphen-,Period。,Square-bracket [],圆括号(),&符号&
  2.   
  3. 不应该连续开始和结束任何特殊字符
  4.   

有效:

  1. Empire3 State& Building [A]
  2. 7Empire.State楼(A)
  3. 帝国(州)_Building [A] 12
  4. 无效:

    1. @#$ @ $ @建筑物))
    2. ().- building2
    3. $ buildingseven [0]&安培;
    4. 我正在努力争取第二种格式。如何在第一个和最后一个检查连续允许的特殊字符。很感谢任何形式的帮助。

1 个答案:

答案 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