【问题标题】:how to check inserted regex pattern is valid or not如何检查插入的正则表达式模式是否有效
【发布时间】:2013-07-29 03:11:10
【问题描述】:

大家好,我必须创建一个演示项目,以检查插入的正则表达式模式是否有效。

我有一个文本框。

在此文本框的帮助下,我正在输入日期、电子邮件、时间等的正则表达式。
但我不知道如何进行这种类型的验证检查。
帮我解决这个问题。

这是我的小提琴:http://jsfiddle.net/ygfQ8/9/

它并不完美,只是我如何使用 jquery 检查模式的一个视图。

$('input').on('blur',function(){
 var str = $('input').val();
var first = '(';
    var last = ')';
    var get_first =  str.charAt( str.length1 );
    var get_last = str.charAt( str.length -1 );
    if(first==get_first && last==get_last)
    {
        alert('patter is valid');
    }
    else
    {
        alert('pattern is invalid');
    }
});

html 文本框是<input type='text'>

这是 php 工作演示:

<?php
//this variable containg any string .... doesnt matter wat ?
$subject = 'This is some text I am searching in'; //simple testing string variable
$pattern = '(fdsfdsfdsfdsfsd'; // user inputed string 
if(@preg_match($pattern, $subject) === false)
echo "YOU have entered wrong regex pattern";
else 
echo "Great work ";
?>

【问题讨论】:

  • 您想检查一下lastfirst 字符是否相同?或者如果正则表达式模式有效?
  • 在 try-catch 块中创建一个新的 Regex 对象...如果您没有进入 catch 块,则该模式是有效的。
  • @FSou1 想检查正则表达式模式是否有效

标签: javascript regex


【解决方案1】:

这可以满足您的需求:

function isPatternValid(pattern) {
    try {
        "".match(new RegExp(pattern));
        return true;
    } catch (err) {
        return false;
    }
}

调用方式:

$('#input').blur(function() {
    alert(isPatternValid(this.value));
});

【讨论】:

  • @user2496644 让"".match(...),不用放假值。这个想法只是检查match 方法是否可以运行,无论返回什么。如果它无法运行,这意味着正则表达式无效,则会抛出异常,被catch 块捕获,因此return false
  • 嘿,看看我的这个问题:- stackoverflow.com/questions/18075380/… 并发表评论
猜你喜欢
  • 2013-04-29
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 2013-07-31
  • 2018-03-14
  • 2013-11-07
相关资源
最近更新 更多