在文件名中替换s01e01

时间:2017-05-13 01:44:49

标签: javascript jquery regex

我有一个电影列表,当链接有焦点时,会将链接文本发送到我用于搜索功能的输入字段。 我想为电视节目做同样的事情。

我的文件目前格式为

<a href="showname s01e01.mp4">Showname s01e01</a>

我需要发送到输入字段的文本是

  

Showname&安培;季节= 01&安培;情节= 01

这是否可以在不更改屏幕上显示的链接文本的情况下实现?

这是我用来将文本发送到输入字段的脚本。

$(function () {
    $('#rightbox a').on('focus', function () {
        var text = $('#moviename');
        text.val($(this).text());
var fileName =$(this).text();
        fileName = fileName.replace(/\.[^/.]+$/, "");
        text.val(fileName);    
        $Form.click();
    });
});

我猜这里需要一些正则表达式,但我还没有在正则表达式上做得好。

2 个答案:

答案 0 :(得分:1)

如果您的字符串非常简单:'Showname s01e01'那么您可以使用简单的捕获:

/^(.+?) s(\d+)e(\d+)$/ 那就是:

  (.+?)  - Match and capture one or more characters up to a space before
  s      - an s
  (\d+)  - capture the next one or more digits
  e      - followed by e
  (\d+)  - capture the next one or more digits

从这些捕获中,您可以为输入框构建新的字符串。

$(function () {
    $('#rightbox a').on('focus', function () {
        var filename = $(this).text(); // like "Lost s01e02" ?? 
        var myRegexp = /^(.+?) s(\d+)e(\d+)$/;
        var match = myRegexp.exec(filename); // array of matched bits
        var qryStr = match[1] + '&Season=" + match[2] + "&Episode=" + match[3];
        $("#moviename").val(qryStr); // <- text box??    
        $Form.click();
    });
});

输入'moviename'然后将包含字符串: 失物安培;季节= 01&安培;情节= 02

小提琴:https://jsfiddle.net/m7qxsf6m/4/

答案 1 :(得分:1)

或者,你可以像这样捕捉电影和节目标题:

[更新

<强> jsFiddle Demo

$("#containera a").click(function() {
  var title = $(this).text(),
    // we check if the title has case insensitive s01e01 pattern
    // if yes it's a show, otherwise it's a movie
    isShow = (/s(\d+)e(\d+)/i).test(title),
    rgx, rplcment;

  // the regex and the replacement both depend on if it's a show or a movie
  // we control it using the conditional (ternary) Operator
  rgx = (isShow) ? / s(\d+)e(\d+).*/i : /(\w+(\.\w+)*)\.\w+/;
  rplcmnt = (isShow) ? '&Season=$1&Episode=$2' : '$1';

  title = title.replace(rgx, rplcmnt);
  $('#moviename').val(title);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input id='moviename' size=50>
<div id="containera">
  <a href="#">rocky.mp4</a><br>
  <a href="#">rambo.avi</a><br>
  <a href="#">some #movie [title] & with (dots), w3.2.5.avi</a><br>
  <a href="#">lost s01e01.mp4</a><br>
  <a href="#">simpsons s01e02.mkv</a><br>
  <a href="#">big bang theory S02E05 [lorem ipsum] by ABC123.mp4</a><br>
  <a href="#">some $other show title 3.5 S11E15.mkv</a><br>
</div>