正则表达式检查始终返回null \ false \ -1

时间:2019-05-03 19:20:48

标签: javascript

我在ASP.NET MVC5上有一个简单的计算器,前端在HTML \ CSS \ Javascript上。 在按钮的事件处理程序中,我将所有值连接到字符串中,并希望检查其是否满足正则表达式。但是,例如,如果我将以下值放入计算器:“ 99 * 66-”,则下面的代码每次都返回null。

这里的正则表达式可以正常工作:https://regex101.com/r/AxMvPe/1

整个代码:https://jsfiddle.net/0g79hkbc/

var regEx = /[+-]?([0-9]*[,])?[0-9]+[-+\/*][0-9]*[,]?[0-9]+[-+\/*]/;    //in case if problems will appear https://regex101.com/ 

$('.button').on('click', function () {
  var buttonText = this.innerHTML;
  var inputedText = inputElement.innerHTML + buttonText;

  console.log(inputedText.match(regEx));

});

我尝试了以下选项,但没有帮助:

  1. 替换正则表达式对象上的正则表达式
  2. 使用.test()代替.match()(错误)
  3. 使用.search()代替.match()(获取-1)

我还尝试手动输入“ 99 * 66-”,然后将inputedText与javascript字符串“ 99 * 66-”进行比较,它也返回false。为什么?

1 个答案:

答案 0 :(得分:0)

对我来说很好,除了例如99*时它不匹配。您将需要重复的一组正则表达式,例如:https://regex101.com/r/AxMvPe/2 向其中添加了彩车:)

var regEx = /[+-]?([0-9]*[,])?[0-9]+[-+\/*][0-9]*[,]?[0-9]+[-+\/*]/;    //in case if problems will appear 

inputElement = $('#input');

$('.button').on('click', function () {
  var buttonText = $(this).val();
  var inputedText = inputElement.val() + buttonText;
  
  console.log(inputedText.match(regEx));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id='input' type='text' value='99*66' />
<input class='button' type='button' value='-'/>