RegExp.prototype.test返回混合结果

时间:2016-03-14 20:39:29

标签: javascript regex

我有一个函数可以生成以下Regex来检测粘贴到我的应用程序文本编辑器中的Emojies:

var regex = /:[smile|laughing|blush|relaxed|smirk|heart_eyes|flushed|satisfied|grin|wink|stuck_out_tongue|sleeping|worried|fearful|frowning|confused|disappointed|cry|sob|rage|sunglasses|innocent|yum|facepalm|heart|broken_heart|exclamation|question|zzz|+1|thumbsdown|woman|man|kiss|clap|sunny|umbrella|snowman|gift|dollar|airplane|rocket|boat|steam_locomotive|four_leaf_clover|bell|bulb|computer|hammer|phone|microphone|fork_and_knife|pizza|wine_glass|beer|cocktail|checkered_flag|sos|no_entry|white_check_mark]+:/gi

提供相同的正则表达式并且相同的输入RegExp.prototype.test会在浏览器中产生不同的结果。

示例

var regex = /:[smile|laughing|blush|relaxed|smirk|heart_eyes|flushed|satisfied|grin|wink|stuck_out_tongue|sleeping|worried|fearful|frowning|confused|disappointed|cry|sob|rage|sunglasses|innocent|yum|facepalm|heart|broken_heart|exclamation|question|zzz|+1|thumbsdown|woman|man|kiss|clap|sunny|umbrella|snowman|gift|dollar|airplane|rocket|boat|steam_locomotive|four_leaf_clover|bell|bulb|computer|hammer|phone|microphone|fork_and_knife|pizza|wine_glass|beer|cocktail|checkered_flag|sos|no_entry|white_check_mark]+:/gi
var match = ':ph:'
regex.test(match)
>>>true
regex.test(match)
>>>false
regex.test(match)
>>>true
regex.test(match)
>>>false
regex.test(match)
>>>true
regex.test(match)
>>>false
regex.test(match)
>>>true

屏幕截图

enter image description here

我读了这个方法的documentation,从我能说的一切都应该是一个纯函数。为什么它返回使用相同输入提供的不同值?

0 个答案:

没有答案