regex-如何在jquery中创建正则表达式

regex-如何在jquery中创建正则表达式,jquery,regex,Jquery,Regex,我想验证一个url,但不是完整的url。我想检查字符串是否包含com或co.uk,然后是/,然后是/。我不在乎它的开头和结尾。所以这将是一个匹配co.uk/fewfwe或com/Grege 这就是我到目前为止所做的: $(document).ready(function () { $('#SavePage').click(function (event) { var regex = '/com|co\.uk\/[a-zA-Z]/'; va

我想验证一个url,但不是完整的url。我想检查字符串是否包含
com
co.uk
,然后是
/
,然后是/。我不在乎它的开头和结尾。所以这将是一个匹配
co.uk/fewfwe
com/Grege

这就是我到目前为止所做的:

         $(document).ready(function () {
    $('#SavePage').click(function (event) {
        var regex = '/com|co\.uk\/[a-zA-Z]/';
        var val = $('#URL').val();
        if (val.match(regex) == null) {
            alert('test');
            event.preventDefault();

        }
    });
});

你可以试试下面的正则表达式。它将允许除最后一个
/
之后的
\n
字符以外的任何字符

(?:com|co\.uk)\/.+

仅当您希望允许字母在最后一个
/
符号之后时,请尝试下面的正则表达式

(?:com|co\.uk)\/[A-Za-z]+

您正在将正则表达式放入字符串中,而它应该是一个正则表达式文本

改变

var regex = '/com|co\.uk\/[a-zA-Z]/';


正确答案是Ben和Avinash Raj的答案的组合。您需要同时进行这两项更改才能使其生效,而单凭这两项更改都不够。我还建议从
\.
开始,在
com
co.uk
之前需要一个点

var regex = /\.(?:com|co\.uk)\/[a-z]/i;
重要提示:这只要求
.com/
.co.uk/
后面至少有一个字母。它不要求只有字母,只要求
/
后面的第一件事是字母。这似乎是一个奇怪的要求,而且可能不是你想要做的

示例代码不需要在末尾加上
+
,但实际版本可能需要它。一些可能的变化:

  • var regex=/\.(?:com|co\.uk)\/./i-允许正斜杠后的任何字符
  • var regex=/\.(?:com | co\.uk)\/[a-z]+$/i-仅允许正斜杠后的字母
  • var regex=/\.(?:com | co\.uk)\/[\w?&%=-]+$/i-将匹配大多数URI
  • var regex=/\S+\(?:com | co\.uk)\/\S+$/i-将匹配整个URI,只要没有空格

这里有很多可能的变化,正确的变化将取决于您的具体情况。

您希望将
com | co\.uk
分组如下:
/(com | co\.uk)\/[a-zA-Z]/
@RevanProdigalKnight您需要在char类之后添加
+
。我就是这样做的。不幸的是,该注释的编辑期似乎已过。为了便于将来参考,regex周围的引号是不必要的,并且在使用
.match(regex)
时,实际上会导致字符串到regex的转换。在JS中,regex文本由
/
分隔(因此您的将是
var regex=/com | co\.uk\/[a-zA-Z]/;
var regex = /\.(?:com|co\.uk)\/[a-z]/i;