reactStringReplace()不一致的正则表达式匹配

时间:2018-09-26 17:02:56

标签: javascript regex reactjs match

我正在尝试使用react-string-replace来匹配文本字符串中的所有$ Symbols。

以下是一些我们希望匹配的示例值(股票/加密货币/外汇对):$ GPRO,$ AMBA,$ BTC / USD,$ LTC / ETH

这是我们尝试的正则表达式

SCRAM

传递字符串时

  

$ this很棒$ this /也很棒。

通过/\$\S+[^\s]*/g -在数组中返回正确的符号。

.match()

使用时

reactStringReplace()-每个匹配项都将返回

0: "$this"
1: "$this/works"

任何想法,为什么

works great

似乎不正确地处理此正则表达式?

谢谢你!

1 个答案:

答案 0 :(得分:1)

检查React String Replace documentation,它写在这里:

  

reactStringReplace(string, match, func)
  ...
  匹配
  类型:regexp|string
  
  您要在string中替换的字符串或RegExp。请注意,使用RegExp时,您必须包括一个匹配组。

为什么要添加捕获组?请参见replaceString功能。有var result = str.split(re);行使用该模式来实际 分割 使用该模式将您传递给正则表达式的内容,从而整体化输入匹配和不匹配正则表达式的部分。

如果您不将组添加到作为 String 传递的正则表达式中,则捕获括号将为added automatically around the whole pattern

if (!isRegExp(re)) {
    re = new RegExp('(' + escapeRegExp(re) + ')', 'gi');
}

如果您在不捕获括号的情况下将正则表达式作为 RegExp 传递,则匹配结果将从结果数组中丢失,因此它们将消失。

所以,使用

/(\$\S+)/g

如果要在输出中保留$个字符,或者

/\$(\S+)/g

如果您想省略美元。