如何使用Javascript在RegEx中获得此结果

时间:2016-02-19 03:52:22

标签: javascript regex

  1. 如果我的条目是“001.1-2016”,我想要“001.2-2016”
  2. 如果我的条目是“001.8-2015”,我想要“001.9-2016”
  3. 如果我的条目是“001.12-2014”,我想要“001.13-2016”
  4. 如果我的条目是“001.123-2016”,我想要“001.124-2016”
  5. 我尝试了这样的正则表达式:

    ([0-9]{3}\.)(.*)(\-[0-9]{4})
    

    但这得到了所有,我只想要中间。

4 个答案:

答案 0 :(得分:1)

您的正则表达式(\[0-9\]{3}\.)(.*)(\-\[0-9\]{4})正常,您只需要获取第二个捕获的组结果。



var arr = ["001.1-2016", "001.8-2015", "001.12-2014", "001.123-2016"];
var regex = /([0-9]{3}\.)(.*)(\-[0-9]{4})/;

arr.forEach(function(str) {
    document.body.innerHTML += str.match(regex)[2] + '<br />';
});
&#13;
&#13;
&#13;

您可以使用String#splitparseInt

var value = "001.12-2014";
var num = parseInt(value.split('.')[1], 10);

&#13;
&#13;
var value = "001.12-2014";
var num = parseInt(value.split('.')[1], 10);

document.body.innerHTML = num;
&#13;
&#13;
&#13;

使用Regex

var value = "001.12-2014";
var num = value.match(/.*?\.(\d+)/)[1];

&#13;
&#13;
var value = "001.12-2014";
var num = (value.match(/.*?\.(\d+)/) || [])[1];

document.body.innerHTML = num;
&#13;
&#13;
&#13;

  

我只需要在这个数字中添加+1,例如。 &#34; 001.12-2014&#34; &GT;&GT;&GT; &#34; 001.13-2014&#34;或&#34; 001.123-2014&#34; &GT;&GT;&GT; &#34; 001.124-2014&#34;

&#13;
&#13;
var arr = ["001.1-2016", "001.8-2015", "001.12-2014", "001.123-2016"];
arr = arr.map(e => e.replace(/\.(\d+)/, ($0, $1) => '.' + (1 + +$1)));

document.body.innerHTML = arr;
&#13;
&#13;
&#13;

要将数字增加1,您可以使用String#replace

&#13;
&#13;
document.getElementById('input').addEventListener('keyup', function() {
    var value = this.value;

    value = value.replace(/\.(\d+)/, function($0, $1) {
        return '.' + (1 + +($1 || 0));
    });

    document.getElementById('output').innerHTML = value;
}, false);
&#13;
<input type="text" id="input" />
<pre id="output"></pre>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

正则表达式可能是

class Model < ActiveRecord::Base
    self.primary_keys = :some_id,:some_other_id
end

如果您不关注/[0-9]+\.([0-9]+)\-[0-9]+/g 之前和.

之后的数字格式

您可以在here上进行测试。

答案 2 :(得分:1)

尝试使用split方法。split()方法通过将字符串分隔为子字符串将String对象拆分为字符串数组。

<script>
function myFunction() {
    var str = "001.12-2014";
    var res = new Array();
    res=str.split("."); 
    var finalres=res[1].split("-",1);   
    document.getElementById("demo").innerHTML = finalres;
}
</script>

输出:

enter image description here

答案 3 :(得分:1)

这匹配全部4(找到小数并取下面的一个或多个数字):

/\.(\d+)/g

@ https://regex101.com/r/qG2mX7/4