Javascript 三星Tizen TV上的Regex验证返回false

Javascript 三星Tizen TV上的Regex验证返回false,javascript,samsung-smart-tv,tizen-web-app,Javascript,Samsung Smart Tv,Tizen Web App,我正在使用JavaScript开发一个SmartTV web应用程序。 我想编写一个正则表达式来验证本地移动运营商代码: op_codes = [33, 50, 63, 66, 67, 68, 73, 93, 95, 96, 97, 98, 99] 我的代码在Chrome和LG webOS中正常工作。但是在三星TizenRegExp.test中,即使它应该是真的,也返回false 代码示例: var val = '0985739341', op_codes = [33, 50, 63,

我正在使用JavaScript开发一个SmartTV web应用程序。 我想编写一个正则表达式来验证本地移动运营商代码:

op_codes = [33, 50, 63, 66, 67, 68, 73, 93, 95, 96, 97, 98, 99]
我的代码在Chrome和LG webOS中正常工作。但是在三星TizenRegExp.test中,即使它应该是真的,也返回false

代码示例:

var val = '0985739341',
    op_codes = [33, 50, 63, 66, 67, 68, 73, 93, 95, 96, 97, 98, 99],
    pattern = new RegExp('^0'+'('+op_codes.join('|')+')'+'\\d{7}$');

console.log(pattern.test(val)); //Samsung Tizen output: false
这是Tizen控制台的屏幕截图:

我不知道我的代码出了什么问题,我该怎么解决

在Chrome和Tizen上执行相同的代码:

相同的变量铬和Tizen:

新答案 您最新的屏幕截图()告诉我们您在
val
中有一个不可见的字符。我真的,真的,真的应该早点想到这一点。显然,无论出于何种原因,无论您的
val
的源代码是什么,它都包含了一个不可见的字符

您需要识别它,理想情况下,找出它的来源并修复它;否则,把它去掉

要了解它是什么,请尝试以下操作:

console.log("val", val);
Array.prototype.forEach.call(val, function(ch) {
    console.log(ch.charCodeAt(0).toString(16));
});
如果这是它看起来的价值,你会得到

val 0985739341 30 39 38 35 37 33 39 33 34 31
屏幕截图已经更新,控制台中的
val
值非常奇怪…Thx,一切正常(请看我问题中的Tizen控制台屏幕截图)。我将尝试测试这个错误,并找到它出现的地方。@La_Concorde很高兴它能工作!但是我被最新的截图弄糊涂了。为什么
\`介于
^`和
0
之间?我的
validate1
与您的原始代码相同,我不明白为什么它会突然神奇地工作…?确切地说,early很高兴它不能与您的解决方案一起工作。我的打字错误误导了我。))我添加了新的屏幕截图,其中的代码在Chrome和Tizen中执行。我比以前更困惑了。你能解释一下我答案中第三个屏幕截图上显示的输出吗?我真的很困惑。@La_Concorde:是的:一个看不见的角色。我已经更新了答案。:-)