我理解如何在JS和PHP中使用正则表达式。我试图将我的一些PHP代码切换到JS,并且我有一个函数,它通过不同的正则表达式来查看它是否可以找到匹配。
示例PHP:
if(preg_match('/regex1/', $string, $matches)) {
$output = $matches[1];
} else if(preg_match('/regex2/', $string, $matches)) {
$output = $matches[1];
} else etc....
有没有办法在JS中做类似的事情?
我能想到的唯一方法就是:
if(string.match(/regex/)) {
var res = string.match(/regex/);
output = res[1];
} else if ..... and so on
我宁愿不让它做两次比赛......还有另一种方式吗?
感谢您的帮助。
答案 0 :(得分:1)
你可以这样做:
var res;
if(res = string.match(/regex/)) {
output = res[0];
} else if ..... and so on
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
答案 1 :(得分:0)
你可以构建一个像这样的正则表达式数组:
var array = ["/regex1/", "/regex2/", "/regex3/", "/regex4/"];
var x;
for (index = 0; index < array.length; ++index) {
if(string.match(array[index]))){
x++;
output = matches[x];
}
}
答案 2 :(得分:0)
查看MDN关于正则表达式的文档,特别是available methods。我认为你想要的是preg_match
方法而不是匹配,因为它将返回匹配结果的数组,就像PHP中的exec
一样。您可能需要先存储var matches = mystring.exec(/regex1/);
var output;
if (matches.length) {
output = matches[0];
}
来电的结果,然后在您的情况下,您应该检查结果的长度。
<button><%= link_to "Edit", edit_user_path(u.id), { :method =>get } %></button>
<button><%= link_to "Delete", user_path(u.id), { :method => delete, :class=>destroy, data: {confirm: 'Are you sure?' } %></button>