正则表达式查找不包含数字的最后一个字符串

时间:2016-10-28 07:38:36

标签: javascript regex

通常在我的系统中,我有以下字符串:

http://localhost/api/module

找出字符串的最后一部分(这是我的路线)我一直在使用以下内容:

/[^\/]+$/g

但是,可能会出现我的字符串看起来不同的情况,例如:

http://localhost/api/module/123

使用上面的正则表达式,它将返回123。当我的String看起来像这样我知道最后一部分将永远是一个数字。所以我的问题是如何确保我总能找到不包含数字的最后一个字符串?

3 个答案:

答案 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*|$)

说明

我基本上只是扩展你的表达式,带有负向前瞻和后视,基本上匹配你的表达式,只要满足以下两个条件:

  1. (?!\w*\d\w*)可能包含字母,但没有数字
  2. [a-zA-Z]+ 真的,真的只包含一个或多个字母(需要)
  3. (?=\/\d+|$)匹配后跟斜杠,后跟数字行尾
  4. 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"