在正则表达式中排除.jpg,.jpeg,.png,.bmp

时间:2014-02-27 12:41:28

标签: javascript

我编写了一个正则表达式,以便从文本条目中排除.jpg,.jpeg,.png,.bmp。但如果我把a.png放进去就不行了。

这是代码:

  function isValidateName(e) {
      var filter = "^((?!.jpg)(?!.jpeg)(?!.png)(?!.bmp)[a-zA-Z0-9\\u00C0-\\u017F\\-\\.\\s\\'])";
      return String(e).search (filter) != -1;
  }

  alert(isValidateName("image.png")); // It's returning true
  alert(isValidateName(".png")); // It's returning false

基本上我想限制用户在文本末尾添加.jpg,.jpeg,.png,.bmp。

允许:

png,a..png,png。,png .a等

限制: a.png,b.jpg

http://jsfiddle.net/RxwF8/3/

请有人帮助我!!

3 个答案:

答案 0 :(得分:2)

Dot作为正则表达式中的特殊字符,与任何字符匹配。所以你必须逃避它以摆脱它的特殊含义:\.

答案 1 :(得分:1)

如果您需要在字符串末尾检查这些扩展名,请尝试以下模式:

  function isValidName(e) {
      return !(/\.(png|bmp|jpe?g)$/i).test(e);
  };

测试

  console.log(isValidName("myfile.png"))           // false
  console.log(isValidName("myfile.whatever.jPeG")) // false
  console.log(isValidName("myfile.gif"))           // true: this is valid

注意:正则表达式末尾的/i修饰符也会检查camelcase / mixedcase字符串

答案 2 :(得分:0)

这个怎么样?

/^[\u00C0-\u017Fa-z\d\s'.-]+\.(?!(jpg|jpeg|png|bmp)$)[a-z]+$/i