Javascript 如何匹配可能有后缀也可能没有后缀的JS regexp

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(/(.*?)\

我试图创建一个JS正则表达式,它在所有这些输入字符串中返回
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));

}
那么,是否要返回问号之前的所有内容,但如果没有问号,则返回整个字符串?仅供参考,
[^?]
是一个否定字符类的示例。请参阅此处的更多信息。可以使用非正则表达式方法。跳过第一个
^
是否有任何问题?在这些例子中,没有它的结果是相同的。所谓“跳过”是指“省略”/“丢弃”?这是一种冗长的方式,告诉正则表达式引擎只检查字符串开头的模式。如果字符串开头有一个
,则该
/^[^?]+/
正则表达式将不匹配。如果删除
^
,它将在以后找到匹配项(如果字符串不仅仅是
)。