我試圖用JavaScript中的正則表達式驗證字符串。該字符串可以有:正則表達式允許單詞字符,括號,空格和連字符
- 字字符
- 括號
- 空間
- 連字符( - )
- 3至50長度
這裏是我的嘗試:
function validate(value, regex) {
return value.toString().match(regex);
}
validate(someString, '^[\w\s/-/(/)]{3,50}$');
我試圖用JavaScript中的正則表達式驗證字符串。該字符串可以有:正則表達式允許單詞字符,括號,空格和連字符
這裏是我的嘗試:
function validate(value, regex) {
return value.toString().match(regex);
}
validate(someString, '^[\w\s/-/(/)]{3,50}$');
寫您的驗證這樣
function validate(value, re) {
return re.test(value.toString());
}
,並使用此正則表達式
/^[\w() -]{3,50}$/
一些測試
// spaces
validate("hello world yay spaces", /^[\w() -]{3,50}$/);
true
// too short
validate("ab", /^[\w() -]{3,50}$/);
false
// too long
validate("this is just too long we need it to be shorter than this, ok?", /^[\w() -]{3,50}$/);
false
// invalid characters
validate("you're not allowed to use crazy $ymbols", /^[\w() -]{3,50}$/);
false
// parentheses are ok
validate("(but you can use parentheses)", /^[\w() -]{3,50}$/);
true
// and hyphens too
validate("- and hyphens too", /^[\w() -]{3,50}$/);
true
此外,如果你只是想驗證,'RegExp.test()'可能是一個更好的選擇,然後'String.match()'。 – 2013-04-08 15:33:46
在這個答案中,你看到'str#match'?我在'validate'方法中使用're#test'。 – 2013-04-08 19:26:24
這是在問題:'返回value.toString()。匹配(正則表達式);'。 – 2013-04-08 20:37:46
轉義字符在正則表達式是''\''不''/' '。而且,由於您使用的是字符串,因此您必須自行轉義''''(或讓您的生活變得輕鬆並使用正則表達式)。 – 2013-04-08 15:30:40
是的,如果你使用正確的escape felix,你當前的正則表達式工作正常 – smerny 2013-04-08 15:31:50
你知道'\ w'定義的單詞字符包括'A-Za-z0-9'和下劃線'_',對吧? – nhahtdh 2013-04-08 15:31:57