PHP正则表达式在if语句中使用Javascript

时间:2015-05-13 20:31:38

标签: javascript php regex

我理解如何在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

我宁愿不让它做两次比赛......还有另一种方式吗?

感谢您的帮助。

3 个答案:

答案 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>