正则表达式测试并在javascript中存储结果
在ruby中,我经常使用以下内容:正则表达式测试并在javascript中存储结果,javascript,Javascript,在ruby中,我经常使用以下内容: if "my string123" =~ /string(\d+)/ puts "I got #{$1}" end 我如何在javascript中执行类似的操作?目前,我一直在这样做,但感觉很脏 m = "my string123".match(/string(\d+)/) if (m) puts "I got " + m[1] 也许我应该接受这一点,但我想我会问,是否有语法上的微妙之处我遗漏了。谢谢 你没有遗漏任何东西。 如果已经定义了m,则可以
if "my string123" =~ /string(\d+)/
puts "I got #{$1}"
end
我如何在javascript中执行类似的操作?目前,我一直在这样做,但感觉很脏
m = "my string123".match(/string(\d+)/)
if (m)
puts "I got " + m[1]
也许我应该接受这一点,但我想我会问,是否有语法上的微妙之处我遗漏了。谢谢 你没有遗漏任何东西。
如果已经定义了
m
,则可以执行If(m=“string”.match(/regex/)
,但这并不太干净,并且不能与var
一起使用。这仅用于测试文本中表达式的外观:
这用于获取匹配数组:
str然后包含[“o”,“or”,“ro”]否,这是正确的。ruby方式应该让人感觉不舒服,因为它添加了一个隐藏的/额外的语法,您必须理解它。js方式纯粹是功能性的。应该注意的是,如果您只想获得捕获的部分而不想获得完全匹配,那么您可以使用全局匹配:
/regexp/g
。然后您的匹配将在m[0]
中返回。如果这是您第一次使用m
,它可能会有var
关键字:var m=代码>。另外,我不认为JavaScript有puts
@slebetman-/g
标志的一个问题:你会得到“string123”
,而不是“123
”`,你忘记了这个组。@Kobi:嗯,是的。我才意识到。我认为这种行为与实际情况相反。“var”到底有多重要?我以前不使用它,而且似乎在所有浏览器中都能正常工作?:)@凯文-谢谢。对于var
,它可能非常重要:
var a = "my string123"; //or given as data..
var b = /string(\d+)/;
if (b.test(a)) alert("found some digits inside");
var str = "Watch out for the rock!".match(/r?or?/g);