通常在我的系统中,我有以下字符串:
http://localhost/api/module
找出字符串的最后一部分(这是我的路线)我一直在使用以下内容:
/[^\/]+$/g
但是,可能会出现我的字符串看起来不同的情况,例如:
http://localhost/api/module/123
使用上面的正则表达式,它将返回123
。当我的String看起来像这样我知道最后一部分将永远是一个数字。所以我的问题是如何确保我总能找到不包含数字的最后一个字符串?
答案 0 :(得分:2)
这就是我提出的以下几行module
非常严格的匹配:
http://localhost/api/的模块强>
http://localhost/api/的模块强> / 123
http://localhost/api/的模块强> / 123A
http://localhost/api/的模块强> / A123
http://localhost/api/的模块强> / a123a
http://localhost/api/的模块强> / 1A3
(?!\w*\d\w*)[^\/][a-zA-Z]+(?=\/\w*\d+\w*|$)
我基本上只是扩展你的表达式,带有负向前瞻和后视,基本上匹配你的表达式,只要满足以下两个条件:
(?!\w*\d\w*)
可能包含字母,但没有数字[a-zA-Z]+
真的,真的只包含一个或多个字母(需要)(?=\/\d+|$)
匹配后跟斜杠,后跟数字或行尾在Regex101的示例中查看此操作。
答案 1 :(得分:1)
/([0-9])\w+/g
那会选择数字。您可以使用它从网址中删除该部分。你用它用什么语言?
答案 2 :(得分:1)
partYouWant = urlString.replace(/^.*\/([a-zA-Z]+)[\/0-9]*$/,'$1')
这是在行动:
urlString="http://localhost/api/module/123"
urlString.replace(/^.*\/([a-zA-Z]+)[\/0-9]*$/,'$1')
-->"module"
urlString="http://localhost/api/module"
urlString.replace(/^.*\/([a-zA-Z]+)[\/0-9]*$/,'$1')
-->"module"
它只使用捕获表达式来查找最后一个非数字部分。 它也会这样做,不确定这是否是你想要的:
urlString="http://localhost/api/module/123/456"
urlString.replace(/^.*\/([a-zA-Z]+)[\/0-9]*$/,'$1')
-->"module"