在我看来,jQuery RegExp无法处理整个字符串中的匹配。
这是测试字符串的正则表达式模式和函数:
var billMonthYearRg = new RegExp("^\D*([0-9]+)\s?(-|\/)\s?([0-9]{4})\D*$", "gi");
$('#Description').on('change', function () {
var matches = billMonthYearRg.exec($('#Description').val());
if (matches != null && matches.length > 3) {
$('#BillMonth').val(matches[1]);
$('#BillYear').val(matches[3]);
}
});
我尝试将月份与文本进行匹配,但仅当它出现一次并且没有更多数值时,例如。 '非数字文本11-2222非数字文本'。
模式是可以的,当我们在乞讨时移动^和在模式结束时移动$,但是如果mm-yyyy发生更多那么我们得到匹配。
作为'Description'的输入,我们使用:
<textarea id="Description" name=""></textarea>
<input id="BillMonth" type="number" name="BillMonth" />
<input id="BillYear" type="number" name="BillYear"/>
我们在https://regex101.com/上测试了regext并且工作正常,但在网站上却无法正常工作。
我们使用jQuery JavaScript Library v2.1.4