【问题标题】:regular expression validation using javascript使用 javascript 进行正则表达式验证
【发布时间】:2012-07-06 15:04:47
【问题描述】:

我需要根据 javascript 中的正则表达式验证文本。我的正则表达式工作正常,但无法找出它在 java 脚本中不起作用的原因。

正则表达式是这样的,^([-+/*]\d+(\.\d+)?)*

有效的表达式是+7+9.36*8+4-9.3/5.0

无效匹配是test8.36

这是代码,

    var ck_diffrentialformula = /^([-+/*]\d+(\.\d+)?)*/;

            function radtxtbxLinkedDifferentialFormulaOnBlur(sender, eventArgs) {
                if (sender.get_value().length > 0) {

                    var entered_value = sender.get_value();

                    if (ck_diffrentialformula.test(entered_value)) {
                     alert('Text Matches');
                    }
                    else {
                     alert('Text does not match');
                    }
                }
            }

sender.get_value() - gives the text box value over here.

请告诉我哪里做错了。

【问题讨论】:

  • 你收到任何警报了吗?
  • 请提供一个需要验证的实际数据示例(最好是有效示例和无效示例)。
  • 这将极大地帮助我们了解sender.get_value() 的价值(以及您对警报的期望)。
  • @Sirwani - 是的,但即使我输入了正确的格式,它也会给我错误消息。
  • 您的代码,完全一样,绝对没有问题并且匹配您的所有测试数据:jsbin.com/etigug/edit#source

标签: javascript regex


【解决方案1】:

我假设你使用它是这样的:

<input type="text" onchange="radtxtbxLinkedDifferentialFormulaOnBlur(this,null)" />

sender 没有方法 .get_value() 所以这甚至行不通。替换它,它似乎工作。

function radtxtbxLinkedDifferentialFormulaOnBlur(sender, eventArgs) {
    console.log(sender)
    if (sender.value.length > 0) {
        console.log(sender.value);
        if (ck_diffrentialformula.test(sender.value)) {
         console.log('Text Matches');
        }
        else {
         console.log('Text does not match');
        }
    }
}

【讨论】:

  • 更新了我的问题,我正在使用 'sender.get_value()' 获取文本框值,并且该值也即将到来
  • 所以sender.getValue() 返回正确的值......你所剩下的只是一个 if 语句。语法有效。还有什么不对劲的。向我们展示 getvalue 代码
  • sender.getValue() 返回我使用警告框检查过的正确值
  • 可以提醒entered_value吗?
  • 如果你能做到这一点,它应该会提醒一些东西,因为你有一个 if 和一个 else... 是其他原因造成的。你必须分享整个代码。我真的不明白。您的代码按原样运行。
【解决方案2】:

也许你想试试这个表达式:/^([\-+\/*]\d+(\.\d+)?)*$/
它在正则表达式中转义“-”和“/”(jsbin 建议)并考虑整个字符串(最后是$)。

【讨论】:

  • 谢谢,它只是我必须添加一个额外的转义字符。正确的正则表达式是/^([\-+\/\*]\d+(\.\d+)?)*$/
最近更新 更多