javascript正则表达式来解析.net json Datetime

ope*_*sas 4 javascript regex json date

我不是正则表达式专家,所以我正在寻求帮助以使正则表达式像这样工作:

var regExp = ???

regExp.exec('\/Date(1330848000000-0800)\/') = [..., '1330848000000', '0800']

// optional gmt
regExp.exec('\/Date(1330848000000)\/') = [..., '1330848000000', null]

regExp.exec('\/Date(1)\/') = [..., '1', null]

// gmt required if - is present
regExp.exec('\/Date(1330848000000-)\/') = null

// escaping backslash is required
regExp.exec('/Date(1330848000000-0800)\/') = null
regExp.exec('\/Date(1330848000000-0800)/') = null

// case sensitive
regExp.exec('\/date(1330848000000-0800)\/') = null

// only numbers allowed
regExp.exec('\/Date(1aaa848000000-0800)\/') = null
regExp.exec('\/Date(1330848000000-0a00)\/') = null
Run Code Online (Sandbox Code Playgroud)

我很早就被这样愚蠢的东西卡住了:

/\\bla(.*)bla/.exec('\bla123bla') = null // instead of [ ..., '123']

new RegExp('\\\\bla(.*)bla').exec('\bla123bla') = null // instead of [ ..., '123']
Run Code Online (Sandbox Code Playgroud)

nha*_*tdh 5

如果字符串从时间和时区中不含任何其他数字,则可以使用此正则表达式:

/(\d+)(?:-(\d+))?/
Run Code Online (Sandbox Code Playgroud)

Putting into your code:

var regex = /(\d+)(?:-(\d+))?/;
// regex.exec...
Run Code Online (Sandbox Code Playgroud)

If you really need to validate and extract the numbers out of the string:

/^\/Date\((\d+)(?:-(\d+))?\)\/$/
Run Code Online (Sandbox Code Playgroud)

The regex above will check that the string follows the exact format, and also extract the numbers out.