字符串的正则表达式,不以指定的子字符串结尾[重复]

Posted

技术标签:

【中文标题】字符串的正则表达式,不以指定的子字符串结尾[重复]【英文标题】:Regular expression for strings, which are no ended with a specified substring [duplicate] 【发布时间】:2013-01-23 02:06:18 【问题描述】:

请建议一个正则表达式来查找所有不以“.pdf”结尾的字符串。 所以,它应该找到“some string”和“some stringpdf”的stings,而不是像“some string.pdf”这样的字符串

谢谢, 阿列克谢·阿修廷

【问题讨论】:

如果您只需要这些,您可以使用正则表达式查找以 .pdf 结尾的字符串,然后在匹配时拒绝它们,并接受其余的 @NannuoLei 不要考虑为此目的滥用正则表达式。 @Jack 你说得对,正则表达式对于这么小的任务来说太多了,谢谢你指出。 【参考方案1】:

这是正则表达式

/^(?!.*\.pdf$).*/

示例:

var r =  /^(?!.*\.pdf$).*/;
r.test("some string");     //true
r.test("some stringpdf");  //true
r.test("some string.pdf"); //false

实际上,我推荐@Nannuo Lei 的建议。

【讨论】:

【参考方案2】:

如果你要测试单个字符串,你可以使用这个正则表达式

/^(?!.*\.pdf$).*$/

如果字符串中有多个要匹配的字符串,可以使用

/(\s|^)(?![^\s]+\.pdf(\s|$))[^\s]+/

【讨论】:

以上是关于字符串的正则表达式,不以指定的子字符串结尾[重复]的主要内容,如果未能解决你的问题,请参考以下文章

字符串的正则表达式不以给定的后缀结尾

如何使用正则表达式匹配不以某些字符开头或结尾的单词?

正则表达式 - 以特定字符串开头但不以另一个子字符串结尾

正则表达式:如何匹配不以前缀列表开头的子字符串

正则表达式匹配空间不以 char 开头/结尾

jQuery 属性选择器:除了不以指定字符串结尾的任何东西吗?