这些是我的输入:
ab_something#123
something else#15
zy_s0meth1ng third
nothing
我需要的输出是:
something
something else
s0meth1ng third
nothing
我得到的最接近的是(?:.._|^)(.*)(?:#[0-9]*|$)
,但这仍然会捕获后缀。
答案 0 :(得分:0)
试试这个:^(?:.*_)*(.*?)(?:#[0-9]*)*$
基于我使用的正则表达式测试程序,此模式捕获了第4组中所需的字符串,用于您的四个示例。
我改变的事情:
*
如果字符串中有多个前缀/后缀,则为模式。*?
)来确保这一点
它不会在后缀组获得后缀之前获取后缀。答案 1 :(得分:0)
/^(.{2}_)?([^#]+)(.\d+)*$/
我的一个朋友最终帮助了我。
基本上:
(.{2}_)?
匹配出现0或1次的前缀
([^#]+)
匹配中间部分,直到#
(.\d+)*$
匹配#及其后的所有数字
答案 2 :(得分:0)
试试这个:
var str = ["ab_something#123",
"something else#15",
"zy_s0meth1ng third",
"nothing"
];
for (var i = 0; i < str.length; i++) {
str[i] = str[i].replace(/(^[a-zA-Z]+_|#[0-9]+$)/g, '');
}
console.log(str);
&#13;