比较Javascript中的两个正则表达式,得到奇怪的结果
Comparing two regex in Javascript and getting weird results
谁能解释一下这个奇怪的行为在Javascript?当我使用match()
方法进行比较时,我没有得到预期的结果。
var mat_1 = "wpawn";
var mat_2 = "wRook";
//compare both; do they have the same first letter?
alert(mat_1.match(/^'w/) + " seems equal to " + mat_2.match(/^'w/));
if (mat_1.match(/^'w/) === mat_2.match(/^'w/)) {
alert("They are really equal")
}
//another approach
if (mat_1[0] === mat_2[0]) {
alert("Yes! Equals")
}
match
生成一个数组。您实际上应该使用数组比较函数,但为了简单演示,请尝试以下操作——选择并比较第一个匹配值。触发所有3个警报:
var mat_1 = "wpawn";
var mat_2 = "wRook";
//compare both; do they have the same first letter?
alert(mat_1.match(/^'w/)+" seems equal to "+mat_2.match(/^'w/));
if(mat_1.match(/^'w/)[0] === mat_2.match(/^'w/)[0]){alert("They are really equal")}
//another approach
if(mat_1[0] === mat_2[0]){alert("Yes! Equals")}
Match返回一个匹配数组:
String.prototype.match(pattern: Regex): Array<string>
在比较两个数组时,第一次求值总是会失败。
这是你想要达到的目标的正确方法。
'myWord'.match(/^'w/)[0] == 'mIsTeRy'.match(/^'w/)[0]
如果你真的想用正则表达式来检查第一个字母,我不建议你这么做。琐碎的事情却要花费太多的开销(只是我的两点意见)。
祝你编码愉快!:)
在接下来的代码行中,您正在检查变量mat_1
和mat_2
是否两个单词都以'w'
开头,顺便说一句,match()
返回一个数组
if (mat_1.match(/^'w/) === mat_2.match(/^'w/)) {
alert("They are really equal")
}
你可以试试
if (["w"] === ["w"]) {
console.log("seems equal");
} else {
console.log("not equal");
}
对于数组比较,您可以检查post
你要做的是
if (["w"][0] === ["w"][0]) { // match for the elements in the array
console.log("seems equal");
} else {
console.log("not equal");
}
相关文章:
- javascript RegExp的奇怪行为:相同的正则表达式会产生不同的结果
- javascript使用正则表达式得到错误的结果
- 如何在javascript中匹配和提取正则表达式中的部分结果
- 正则表达式,两种方式,不同的结果
- 为什么两次运行完全相同的正则表达式的结果不同
- 将此javascript正则表达式匹配限制为26个字符的结果
- JavaScript 正则表达式返回拆分的结果
- 通过正则表达式检查合法字符,但结果出乎意料
- JS正则表达式结果表达式赋值问题
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 使用简单的正则表达式的奇怪结果
- 在外部作用域中定义的正则表达式在 JavaScript 中会产生不同的结果
- 正则表达式第一个结果($ 1)替换为变量的属性
- JavaScript 中的正则表达式用于存储在数组中的负浮点数结果
- 意外的非贪婪JS正则表达式结果
- PHP正则表达式不工作,返回主题字符串而不是正则表达式结果
- 如果前一个字符是/,如何忽略正则表达式结果(基本上忽略链接href内容)
- 检索具有深入信息的正则表达式结果
- JavaScript 字符串由正则表达式结果拆分,子字符串包括空切片
- JavaScript 不返回预期的正则表达式结果