jQuery / JavaScript正则表达式匹配任何三个第一个字符后跟一个精确的字符串

时间:2012-11-05 17:05:16

标签: javascript jquery regex

我需要一个正则表达式来根据下拉列表的值来验证表单。但是,该值是由PHP随机生成的(但总是一个2位数字)。

它必须对“38 |一个晚上”有效。数字38是将要改变的。到目前为止,我有

//return value of dropdown
var priceOption = $("#price_option-4").val();

//make sure it ends with "One Evening"
var oneEvening = priceOption.match(/^ * + 'One Evening' $/);

我认为只要它跟随“一个晚上”

就会匹配任何字符串

5 个答案:

答案 0 :(得分:6)

字符串不能与正则表达式一起使用,你应该在正则表达式文字中写下你想匹配的\ test,而不是引号。

   /^\d{2}\|One Evening$/.test(priceOption);
//  ^^^^^^                          Begins with two digits
//        ^^                        Escaped the | meta char.
//          ^^^^^^^^^^^^            Then until the end: One Evening    

答案 1 :(得分:1)

只需使用

/^\d\d\|One Evening$/.test(priceOption);

答案 2 :(得分:1)

for xx | One Evening

/^\d{2}\|One Evening$/

答案 3 :(得分:0)

/^.+?One Evening$/

分解

// ^ starts with
// . any character
// + quantifier - one or more of preceding character
// ? non-greedy - ensure regex stops at One Evening.
// One Evening = literal text
// $ match end of string.

请注意,我的回答反映了匹配任何字符序列的要求,然后是One Evening

我认为你可能会更加具体,确保你肯定有两个数字字符。

答案 4 :(得分:-1)

如果可以的话,最好具体一点。请尝试以下方法:

// <start of string> <2 digits> <|One Evening> <end of string>
/^\d{2}\|One Evening$/.test( priceOption );