Javascript 如何匹配可能有后缀也可能没有后缀的JS regexp
我试图创建一个JS正则表达式,它在所有这些输入字符串中返回Javascript 如何匹配可能有后缀也可能没有后缀的JS regexp,javascript,regex,Javascript,Regex,我试图创建一个JS正则表达式,它在所有这些输入字符串中返回example,其中可能有问号 example?after?after 示例?在 示例? 示例 example将是一个动态字符串,因此我无法直接匹配字符串“example” 'example?after?after'.match(/(.*?)\?/)[1] 'example?after'.match(/(.*?)\?/)[1] 'example?'.match(/(.*?)\?/)[1] 'example'.match(/(.*?)\
example
,其中可能有问号
example?after?after
示例?在
示例?
示例
example
将是一个动态字符串,因此我无法直接匹配字符串“example”
'example?after?after'.match(/(.*?)\?/)[1]
'example?after'.match(/(.*?)\?/)[1]
'example?'.match(/(.*?)\?/)[1]
'example'.match(/(.*?)\?/)[1]
上面的前3个返回了预期的示例
,但最后一个返回了错误。如何修改正则表达式以返回预期结果?您可以使用
/^[^?]+/
见
^
匹配字符串的开头,[^?]+
匹配除?
之外的一个或多个符号
var regex=/^[^?]+/;
var strs=[“示例”在“示例”之后,在“示例”之后,在“示例”之后,在“示例”之后,在“示例”之后];
用于(STR的var s)
{
console.log(s+“=>”+s.match(regex));
}
那么,是否要返回问号之前的所有内容,但如果没有问号,则返回整个字符串?仅供参考,[^?]
是一个否定字符类的示例。请参阅此处的更多信息。可以使用非正则表达式方法。跳过第一个^
是否有任何问题?在这些例子中,没有它的结果是相同的。所谓“跳过”是指“省略”/“丢弃”?这是一种冗长的方式,告诉正则表达式引擎只检查字符串开头的模式。如果字符串开头有一个?
,则该/^[^?]+/
正则表达式将不匹配。如果删除^
,它将在以后找到匹配项(如果字符串不仅仅是?
)。