正则表达式删除网址中的字符串

时间:2014-06-22 15:17:31

标签: javascript jquery regex

我有一个像https://randomsitename-dd555959b114a0.mydomain.com这样的网址,想删除网址的-dd555959b114a0部分。

因此randomsitename是一个随机名称,域名是静态域名。

是否可以使用jquery或javascript删除该部件?

3 个答案:

答案 0 :(得分:1)

查看使用正则表达式

的代码
var url = "https://randomsitename-dd555959b114a0.mydomain.com";
var res = url.replace(/ *\-[^.]*\. */g, ".");

http://jsfiddle.net/VYw9Y/

答案 1 :(得分:0)

你可以试试这个正则表达式,

(.*)(-[^\.]*)(.*$)

你的代码应该是,

var url = "https://randomsitename-dd555959b114a0.mydomain.com";
var res = url.replace(/(.*)(-[^\.]*)(.*$)/, "$1$3");
//=>https://randomsitename.mydomain.com

<强>解释

  • (.*)匹配任何字符0次或更多次,并将其存储到组1中,因为我们将这些字符包含在paranthesis中。每当正则表达式引擎找到-时,它就会停止将其存储到group1中。

  • (-[^\.]*)-到文字.存储到group2中。它在找到文字点时停止存储。

  • (.*$)从字面点到最后一个字符存储到group3中。

  • 替换部件的
  • $1$3仅打印存储的group1和3.

OR

(.*)(?:-[^\.]*)(.*$)

如果您使用此正则表达式,则在替换部分中,您只需要放置$1$2

DEMO

答案 2 :(得分:0)

通常最好对所有可能的案例进行编码,并且由于域名的任何部分都允许使用连字符,因此您很可能希望使用更具体的RexExp,例如:

^                  # start of string
(                  # start first capture group
    [a-z]+         # one or more letters
)                  # end first capture group
://                # literal separator
(                  # start second capture group
    [^.-]+         # one or more chars except dot or hyphen
)                  # end second capture group
(?:                # start optional non-capture group
    -              # literal hyphen
    [^.]+          # one or more chars except dot
)?                 # end optional non-capture group
(                  # start third capture group
    .+             # one or more chars
)                  # end third capture group
$                  # end of string

或者没有评论:

^([a-z]+)://([^.-])(?:-[^.]+)?(.+)$

(如果您使用RegExps的文字形式而不是将它们创建为对象,请记住转义斜杠,即/literal\/form/new RegExp('object/form')

在字符串替换中使用,第二个参数应为:$1://$2$3

http://foo.bar-baz.comhttp://foo-bar.baz-blarg.com等网址的上述答案将失败。