我正在寻找正好在第一个字符串结尾之后匹配的正则表达式字符串(没有尾部斜杠或空格)
https://domain/a/ab
https://domain/a/cd/
这样我就可以在它的末尾添加一个参数,所以像这样:
https://domain/a/ab的&安培;字母=真
到目前为止,我已经提出了这一点,但它只匹配字符串的最后一个字符,这不是我想要的
(?!https:\/\/domain\/.*?)(.)$
感谢任何帮助或建议。
答案 0 :(得分:1)
基于你的问题,我将做一些假设:
到目前为止,你已经尝试使用正则表达式来匹配每一行的最后一个字符,我认为这不会帮助你完成你正在寻找的东西。在任何情况下,当有多行字符串时,您可以使用flags g
和m
。
来自mozilla:
g
:全球比赛;找到所有比赛而不是在第一场比赛后停止
m
:多行;将开始和结束字符(^和$)视为多行(即匹配每行的开头或结尾(由\ n或\ r分隔),而不仅仅是整个输入字符串的开头或结尾)< / p>
使用这些标志,一个简单的表达式/(.)$/gm
捕获每一行的最后一个字符。
根据我所做的假设,我认为你最好抓住网址并映射它们:
/^https?:\/\/[^\/]+(\/?.*)$/gm
此正则表达式匹配每行的URL,并捕获域后的路径。
你提到你使用的是javascript,所以这是一个演示:
const regex = /^https?:\/\/[^\/]+(\/?.*)$/gm;
const str = `https://domain/a/ab
https://domain/a/cd/
https://domain/
http://domain
`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
答案 1 :(得分:0)
如果要将该文本附加到原始字符串,可以执行以下操作:
var string = "https://domain/a/ab\nhttps://domain/a/cd/";
string = string.replace(/^(.*)(\n.*)/, "$1&letters=true\n$2");
console.log(string);