2011-08-05 150 views
1

我从一个JSON从服务器正则表达式问题

regexval = ^[A-Za-z\\'\\s\\.\\-\\,]{1,50}$ 

得到以下的正则表达式有一个与此正则表达式的问题它有一个',这是打破我的js代码来测试这个正则表达式。我如何使这是一个有效的正则表达式?

IM做这样的事情来测试它

if(!regexval.replace(/\\/g,"\\").test(inputVal)) { 
} 

编辑

以下是JSON

[ 
    { 
     "ExtensionData": {}, 
     "Data1": null, 
     "DisplayName": "First Name", 
     "IsRequired": true, 
     "LengthValidation": 0, 
     "Name": "ServiceFirstName", 
     "RegexValidation": "^[A-Za-z\\'\\s\\.\\-\\,]{1,50}$", 
     "Type": "String", 
     "ValidationMessage": "The field 'First Name' doesn't meet the format requirements" 
    }, 
{ 
     "ExtensionData": {}, 
     "Data1": null, 
     "DisplayName": "Last Name", 
     "IsRequired": true, 
     "LengthValidation": 0, 
     "Name": "ServiceLastName", 
     "RegexValidation": "^[A-Za-z\\'\\s\\.\\-\\,]{1,50}$", 
     "Type": "String", 
     "ValidationMessage": "The field 'Last Name' doesn't meet the format requirements" 
    } 
] 
+0

在那里做\\只会导致你的正则表达式寻找文字反斜杠(多次)和文字'''','s', .','-'和',' –

+0

那么我如何使正则表达式有效?因为!regexval.test(inputVal)不起作用 – Kishore

+0

是json传递字符串格式的对象吗? –

回答

1

你可以改变单引号将Unicode字符/u0027或使用ASCII \x27并让它正常工作?

看到它在这里的行动:http://jsfiddle.net/TezdR/1/

SO,你真的不需要做替换,但可以使用“串”,因为它是 - 这里是一个更新的版本,你可以看到我做的替换名字而不是最后 - 他们两个应该都是一样的:http://jsfiddle.net/TezdR/2/

+0

我该如何改变这一切是从webservice json – Kishore

+0

添加了一个页面来显示如何使用它 –

+0

谢谢你的工作 – Kishore

1
regexval = /^[A-Za-z\\'\\s\\.\\-\\,]{1,50}$/ 

你错过了,使所需的/秒它是一个正则表达式值

,它看起来像你的实际需要

regexval = /^[A-Za-z\'\s\.\-\,]{1,50}$/ 
3

的双反斜线进行评估,以在正则表达式符号文字反斜杠...或者逃过字符串反斜杠(然后转义下一个字符时,作为一个正则表达式求值) 。

正则表达式生成的解决方案是:

regexval=/^[A-Za-z\'\s\.\-\,]{1,50}$/ 

字串构建的解决方案是:

regexval = new RegExp("^[A-Za-z\\'\\s\\.\\-\\,]{1,50}$"); 

这两个产生一个JavaScript RegEx object,你可以调用.test等上。

if (regexval.test(inputVal)) { 
    //... do something 
} 

你更新

好了,所以每您的更新,如果您解析上述结构到本地JS对象调用jsonobj(例如...如何解析等我假设你知道)和你只想测试JSON数组中的第一个条目返回的......你需要做到以下几点:

//jsonobj - JS object after parsing your example JSON above 
var regex=new RegEx(jsonobj[0].RegexValidation); 
if (regex.test(inputVal)) { 
    //... do your work here 
} 
+0

但仍然^ [A-Za-z \'\ s \。\ - \,] {1,50} $因为'我该怎么办?它说regexval.test不是一个函数 – Kishore