给定example-123
,我只需要提取example
。同样,example
可以是:example-example-345
,在这种情况下,我需要example-example
。这就是我要寻找的模式:
> str.match('-[0-9]{1,}$')[0]
'-123'
我试过:
str.match(/(.*)-[0-9]{1,}$/)
'example-123'
以及
str.match(/(?s).*)-[0-9]{1,}$/)[0]
Uncaught SyntaxError: Invalid regular expression: /(?s).*)-[0-9]{1,}$/: Invalid group
以及
str.match('[^-[0-9]{1,}$]')
null
以及
str.match('(.*)[^-[0-9]{1,}$]')
null
以及
str.match('/.*/[^-[0-9]{1,}$]')
null
以及
str.match('.*^(-[0-9]{1,}$)')
null
......名单还在继续
4条答案
按热度按时间1bqhqjot1#
试试这个:
而且有了
[1]
它只会得到第一部分!lmyy7pcs2#
您可以使用positive lookahead来实现这一点:
14ifxucb3#
您可以使用
*?
在零到无限次之间匹配前一个令牌,尽可能少的次数,根据需要扩展(懒惰匹配,非贪婪匹配)nhjlsmyf4#
您可以匹配正则表达式
Demo
我假设第一个连字符前面的单词必须只包含小写字母。当然,这个假设可能是错误的,在这种情况下,
([a-z]+)
必须相应地改变。例如,要匹配一个字母后面跟着零个或多个字母和数字,它将是([a-zA-Z][a-zA-Z0-9]*)
。如链接所示,下面由党的帽子指示的文本是匹配的。
在最后一个示例中没有匹配项。
正则表达式可以分解如下。
请注意,正向前瞻
(?=-)
强制匹配后面跟一个连字符,但该连字符不是返回的匹配的一部分。