代码之家  ›  专栏  ›  技术社区  ›  Malfist

我的正则表达式怎么了?

  •  0
  • Malfist  · 技术社区  · 14 年前

    我使用javascript来测试选择上传到服务器的文件的结尾。

    正则表达式是这样的:

    (jpg|jpeg|png|gif|bmp)$

    只要文件扩展名是小写的,它就可以正常工作,但是当我这样做的时候

    /(jpg|jpeg|png|gif|bmp)$/i

    我什么都不匹配。

    有人能告诉我为什么吗?我做错什么了?

    6 回复  |  直到 14 年前
        1
  •  2
  •   Alex Zharnasek    14 年前

    使用“i”作为参数 i、 e.RegExp(“(jpg | jpeg | png | gif | bmp)$”,“i”)

        2
  •  2
  •   LukeH    14 年前
    /(jpg|jpeg|png|gif|bmp)$/i
    

    你应该包括 . 也在里面,所以 “foo.dfpng” , “酒吧.oejpg” etc不算有效:

    /\.(jpg|jpeg|png|gif|bmp)$/i
    
        3
  •  1
  •   Robusto    14 年前

    使用正斜杠作为正则表达式的边界,而不是反斜杠。

    /(jpg|jpeg|png|gif|bmp)$/i
    
        4
  •  0
  •   Alex    14 年前

    斜线是错的。反转它们(需要正斜杠)。反斜杠用于转义字符。

        5
  •  0
  •   Kelvin    14 年前

    下面是使用两种regexp语法的示例代码:

    var rxp = new RegExp('(jpg|jpeg|png|gif|bmp)$', 'i')
    var rxp2 = /(jpg|jpeg|png|gif|bmp)$/i
    document.write( rxp.exec('foo.jpg') + "<br/>" )
    document.write( rxp.exec('foo.JPG') + "<br/>" )
    document.write( rxp2.exec('foo.jpg') + "<br/>" )
    document.write( rxp2.exec('foo.JPG') + "<br/>" )
    
        6
  •  0
  •   Marin    14 年前

    这很管用。。

    var reg=/(jpg|jpeg|png|gif|bmp)$/i
    document.write(reg.test('bMp'))