我想创建一个正则表达式,它将接受a-z,A-Z,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-zu00C00-\u017F这样的正则表达式模式,但不确定如何继续。
基本上,这就是我需要的:
1-接受大写A-Z、小写a-z、数字0-9、连字符、单引号、空格和点
2-允许使用带有重音的以下特殊字符:-á,-,ã,é,ó(这些只是几个示例)
3-不允许使用以下字符:-反斜杠、正斜杠、冒号、星号、问号、双引号、小于、大于、竖线和与号
4-不允许使用以下格式:- URL链接、图像和电子邮件地址
对此有什么帮助吗!
发布于 2014-02-28 13:22:22
您可以将此正则表达式与lookahead一起使用:
/^(?!.+?\.(jpe?g|bmp|png)$)[a-z0-9 .'-]+$/i工作演示:http://regex101.com/r/mB7dD5
发布于 2014-02-28 13:56:30
您可以像这样使用negation ?!.:
^[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)发布于 2014-02-28 16:42:39
这应该是可行的。如果你有额外的字符想要否定,只需将它们添加到第一克拉之后的第一个方括号中。
/[^|@!#$%^\/":*&<>?]{0,4}[^.][a-zA-Z]{3}?([a-zA-Z])$/这是假设您想要否定所有结尾扩展名,而不管它们是否是真实类型。
这就是我要使用的模式。如果我想在最后四个字符中包括一个句点,我会把最后3-4个字符切下来,看看它们是否与现有的扩展名匹配。如果最后3-4个字符不是扩展名,则允许使用该字符串。
在这种情况下,您可以只使用:
/[^|@!#$%^\/":*&<>?]*/然后对最后3-4个字符进行切片或拆分句点以检查扩展。您还可以使用子字符串来获取最后几个字符。
https://stackoverflow.com/questions/22086858
复制相似问题