在以下情况下,我一直在尝试获取正则表达式以返回以下内容。
XX -> XX
XXX -> XXX
XX/XX -> XX
XX/XX/XX -> XX/XX
XXX/XXX/XX -> XXX/XXX
我有以下正则表达式,但是它们没有用。
^[^/]+ => https://regex101.com/r/xvCbNB/1
=========
([A-Z])\w+ => https://regex101.com/r/xvCbNB/2
他们很近但是不在那儿。
任何帮助将不胜感激。
答案 0 :(得分:3)
在此处使用替换来匹配/
,然后在行尾使用非斜杠字符会更容易:
搜索正则表达式:
/[^/]*$
替换字符串:
""
如果您要查找正则表达式匹配项,请使用此正则表达式:
^(.*?)(?:/[^/]*)?$
答案 1 :(得分:3)
您要获取从某个字符开始到最后出现的所有文本,或者如果缺少该字符,则要获取字符串的结尾。
使用
React.cloneElement(BaseMessage, { icon: '' })
详细信息
^(?:.*(?=\/)|.+)
-字符串的开头^
-一个非捕获组,它与两个选择中的任何一个都匹配,如果第一个与第一个匹配,则将不尝试第二个:
(?:.*(?=\/)|.+)
-除换行符以外的任何0+字符,应尽可能多但不包括.*(?=\/)
/
-或|
-尽可能多的除换行符以外的任何1+个字符。 答案 2 :(得分:1)
任何特殊原因必须要使用正则表达式吗?仅在斜线处分割字符串,删除最后一项然后重新加入,该如何做:
function removeItemAfterLastSlash(string) {
const list = string.split(/\//);
if (list.length == 1) [
return string;
}
list.pop();
return list.join("/");
}
或者寻找最后一个斜杠并将其删除:
function removeItemAfterLastSlash(string) {
const index = string.lastIndexOf("/");
if (index === -1) {
return string;
}
return string.splice(0, index);
}