创建一个正则接受a-z,A-Z,0-9但不接受.jpg,.JPEG,.bmp,.BMP,.jpg,.JPEG,.png,.PNG的正则表达式

时间:2014-02-28 05:19:02

标签: regex

我想创建一个正则表达式,它将接受az,AZ,0-9,并且最后不应接受.jpg,.JPG,.bmp,.BMP,.jpeg,.JPEG,.png,.PNG的字符串。但是这些是允许在字符串的中间。除了 ”。”它也不应该也接受任何特殊字符。

  Accept:
  -----------
  abc123
  Abc123
  abc png 123
  abc

  Reject
   ----------
  abc@!#$%^
  abc.png
  xyz.jpg
  abc.PNG

我创建了正则表达式模式,如 - [A-Za-z \ u00C00- \ u017F \ - ]但不确定如何继续前进。

基本上这就是我需要的:

1 - 接受大写字母A-Z,小写字母a-z,数字0-9,连字符,单引号,空格和点

2 - 允许使用以下带重音的特殊字符: - á,â,ã,ê,õ(这些只是几个例子)

3 - 不允许使用以下字符: - 反斜杠,正斜杠,冒号,星号,问号,双引号,小于,多于,管道和&符号

4 - 不允许使用以下格式: - URL链接,图像和电子邮件地址

对此有任何帮助!!

3 个答案:

答案 0 :(得分:1)

您可以将此正则表达式用于前瞻:

/^(?!.+?\.(jpe?g|bmp|png)$)[a-z0-9 .'-]+$/i

工作演示:http://regex101.com/r/mB7dD5

答案 1 :(得分:0)

您可以像这样使用否定?!.

^[a-zA-Z0-9](?!.*.jpg)(?!.*.JPG)(?!.*.bmp)(?!.*.BMP)(?!.*.jpeg)(?!.*.JPEG)(?!.*.png)(?!.*.PNG)

修改 也接受没有点的jpg,png等。现在通过用方括号括起.来纠正。

^[a-zA-Z0-9](?!.*[.]jpg)(?!.*[.]JPG)(?!.*[.]bmp)(?!.*[.]BMP)(?!.*[.]jpeg)(?!.*[.]JPEG)(?!.*[.]png)(?!.*[.]PNG)

答案 2 :(得分:0)

这应该有效。如果你想要否定其他字符,只需将它们添加到第一个克拉后的第一个方括号中。

 /[^|@!#$%^\/":*&<>?]{0,4}[^.][a-zA-Z]{3}?([a-zA-Z])$/

这假设您想要否定所有结束扩展,无论它们是否是真实类型。

这是我将使用的模式。如果我想在最后四个字符中包含一个句点,我会将最后3-4个字符切掉,看看它们是否与现有的扩展名匹配。如果最后3-4个字符不是扩展名,则允许该字符串。

在这种情况下,你可以使用:

/[^|@!#$%^\/":*&<>?]*/

然后对最后3-4个字符进行切片或分割一段时间以检查扩展名。您也可以使用子字符串来获取最后几个字符。