
[英]Regex to remove last / if it exists as the last character in the string
[英]Regex for if a character exists after the last instance of a character
我正在尝试组合一个正则表达式,该正则表达式将指示一个字符是否存在于字符串中字符的最后一个实例之后。 例如,如果句点 '.',正则表达式将返回匹配项。 出现在“/”的最后一个实例之后
到目前为止,我能够在 / 之后找到字符串最后一部分的字符串组合:
[^\/]+$
但我不确定如何仅在句号“。”时返回匹配项。 包含在最后的字符串部分中。 我非常感谢任何帮助。
我意识到可以通过拆分字符串来做到这一点,但我希望存在一种纯正则表达式方式。
您可以使用
/[^\/.]*\.[^\/]*$/ // The whole match is the required result
/.*\/([^\/.]*\.[^\/]*)$/ // and extract Group 1 contents
请参阅正则表达式演示 #1和正则表达式演示 #2 。
第二个在实践中效率更高,因为 last /
之后的部分通常更接近较长字符串的末尾,并且通常更快地获得匹配。
细节
[^\/.]*
- 除 . 以外的零个或多个字符.
和/
\.
- 一个点[^\/]*
- 除/
之外的零个或多个字符$
- 字符串结束。JavaScript 演示:
const texts = [ 'a/b/c', 'a/b/ca' ]; texts.forEach( text => { console.log( text, '(/[^\/.]*\.[^\/]*$/) =>', (text.match(/[^\/.]*\.[^\/]*$/)?.[0] || "No match") ); console.log( text, '(/(.*\/([^\/.]*\.[^\/]*)$/) =>', (text.match(/.*\/([^\/.]*\.[^\/]*)$/)?.[1] || "No match") ); } )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.