admin管理员组

文章数量:1289496

I am not so good with regex, I need some help and I am stuck...

This is what I got:

EDITED: Now is working fine, take a look at...

/

This is what I need:

// First 4 numbers must be always 9908
// After the 4 first numbers must be a : as delimiter
// After the delimiter...
// - the allowed values are just numbers from 0-9
// - the min. length is 3
// - the max. length is infinite
// RESULT:
// - Valid: 9908:123 or 9908:123456...
// - Invalid: 9908:12 or 9908:xyz

Thanks.

I am not so good with regex, I need some help and I am stuck...

This is what I got:

EDITED: Now is working fine, take a look at...

http://jsfiddle/oscarj24/qrPHk/1/

This is what I need:

// First 4 numbers must be always 9908
// After the 4 first numbers must be a : as delimiter
// After the delimiter...
// - the allowed values are just numbers from 0-9
// - the min. length is 3
// - the max. length is infinite
// RESULT:
// - Valid: 9908:123 or 9908:123456...
// - Invalid: 9908:12 or 9908:xyz

Thanks.

Share Improve this question edited Mar 8, 2012 at 17:57 Oscar Jara asked Mar 8, 2012 at 17:18 Oscar JaraOscar Jara 14.2k10 gold badges64 silver badges94 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 9
var regex = /^9908:\d{3,}$/;

will match exactly 9908: followed by 3 or more digits.

Alexander Corwin's answer should work fine. I just wanted to add some explanation to his response.

You don't need square brackets around the 9908 because square brackets mean that any of the characters in them are valid. So what your code was actually trying to do was match either a 9, 0 or 8. When you want to specify a literal string of characters, you can just write them out like he did.

Ignoring that however, the second problem I see is that you used the wrong quantifier syntax for specifying the length of the 9908 segment. You need to use curly braces to specify specific length ranges like the {3,} does in his code. Parentheses are simply used to create groups of sequences and back-references.

Additionally, when you aren't creating a RegExp object you should use the shorthand JavaScript regex syntax which is started and ended with a forward slash. You can also add a modifier after the ending slash which changes how the regex is executed. For example:

var re = /stackoverflow/g;

The 'g' means that it can match multiple times on the subject string. There are several other modifiers which you can find more info on here: http://www.regular-expressions.info/javascript.html

Your fixed line should look like this:

var regex = /^9908:\d{3,}$/;

Use this:

var match = /^9908:[0-9]{3,}$/.test("9908:123");
​alert(match);​

本文标签: Regex and delimiter in javascriptStack Overflow