我的MVC应用程序中有一个文本框,我只允许文本为012-345-6 pattern.I我是regex的新手,从来没有创建我自己的.. 我必须从javascript验证相同的模式。
答案 0 :(得分:2)
要验证regex
模式,您可以使用以下^\d{3}-\d{3}-\d$
。
\d
您还可以使用^(\d{3}-){2}\d$
缩短版本。
<强>解释强>
{n}
:匹配任何数字n
:与前一个字符类-
完全匹配次数-
:匹配^
literal $
:以var regex = /^\d{3}-\d{3}-\d$/;
document.getElementById('myText').addEventListener('keyup', function() {
var value = this.value;
if (value && regex.test(value)) {
console.log('if');
this.classList.add('success');
} else {
console.log('else');
this.classList.remove('success');
}
}, false);
:结尾<强>可视化强>
<强>演示:强>
input[type=text] {
border: 1px solid red;
}
.success {
border: 1px solid green !important;
}
&#13;
<input type="text" id="myText" />
&#13;
$meta_query = array();
if($sltNationality != '' && $sltNationality != 'Any') { // nationality query
array_push($meta_query, array(
'key' => 'nationality',
'value' => $sltNationality
));
}
if($age != '' && $age != 'Any') { // age query
// assuming your select values are always in this format : 21 - 30, 31 -40 etc.
$age = explode(' - ', $age);
$min_year = (int)date('Y') - (int)$age[1];
$max_year = (int)date('Y') - (int)$age[0];
// build a regex to get all the birth date in the year range
$year_regex = array();
for($y = $min_year; $y < $max_year; $y++) {
array_push($year_regex, strval($y));
}
array_push($meta_query, array(
'key' => 'age',
'value' => '^[0-9]{2}-[0-9]{2}-('.implode('|', $year_regex).')$',
'compare' => 'REGEXP'
));
}
$args = array(
'posts_per_page' => -1,
'post_type' => 'user',
'meta_query' => $meta_query
);
$users = get_posts($args);
&#13;
答案 1 :(得分:1)
答案 2 :(得分:0)
尝试以下锚定的正则表达式。
^\d{3}-\d{3}-\d$
^
开始\d{3}
正好匹配三位数字。\d
匹配一位数。$
行尾。