我尝试使用正则表达式验证字段名称以匹配JavaScript中的某种格式。
我需要输入的字符串类似于:
字\字\字
因此输入的任何内容都不能为空,必须用反斜杠分隔三个单词。
这是我正在使用的代码,但我不确定该模式是否是正确的语法?!!
function validateResourceName() {
//get posted resource name value
var inputString = document.getElementById("resourceName").value;
//should be in the word\word\word format
var pattern=/[a-Z|/\\/|a-Z|/\\/|a-Z\s]/;
//If the inputString is NOT a match
if (!pattern.test(inputString)) {
alert("not a match");
}
else
{
alert("match");
}
}
任何帮助都将非常感谢!!!
答案 0 :(得分:3)
如果用词来表示大写或小写的英文字母a-z,那么:
char*
那说:
/^(?:[a-z]+\\){2}[a-z]+$/i
字符串的开头^
非捕获组(?:...)
一个或多个字母a-z(或A-Z,因为末尾有[a-z]+
标志)。如果您还想允许其他一些字符,只需将其添加到i
之后的[a-z]
即可。如果你想允许连字符,添加z
(你需要反斜杠,取决于你把连字符放在哪里,所以我总是包括它)。请注意,这是非常以英语为中心的,甚至在英语中,人们有时会用非英文字母写借用的单词,例如简历。\-
反斜杠\\
重复两次{2}
字符串结尾你的表达问题是:
$
无效,因为范围无序([a-Z]
在Z
之前)。如果 有效(或者您写了a
),它会匹配[Z-a]
和Z
之间的所有内容,这不是'只是a
和a-z
A-Z
需要反斜杠然后斜杠\\/
是替换(此或那个)|
是空白答案 1 :(得分:1)
您可以使用此\w+\\\w+\\\w+
或
[a-zA-Z]+(\\[a-zA-Z]+){2}
答案 2 :(得分:1)
尝试/^[a-z]+\\[a-z]+\\[a-z]+$/
function validateResourceName() {
//get posted resource name value
var inputString = document.getElementById("resourceName").value;
//should be in the word\word\word format
var pattern=/^[a-z]+\\[a-z]+\\[a-z]+$/
//If the inputString is NOT a match
if (!pattern.test(inputString)) {
alert("not a match");
} else {
alert("match");
}
}
如果您希望允许单词匹配不区分大小写;
`/^[a-z]+\\[a-z]+\\[a-z]+$/i`
如果您想要更广泛地定义为“'”字词,并允许它由字母数字字符和下划线组成;
`/^\w+\\\w+\\\w+$/i`
答案 3 :(得分:0)
这应该这样做
^\w+\\\w+\\\w+$
在javascript中
if (/^\w+\\\w+\\\w+$/.test(subject)) {
// Successful match
} else {
// Match attempt failed
}
答案 4 :(得分:0)
试试这个,请参阅Regex fiddle进行正则表达式演示,Jsfiddle 进行代码演示
正则表达式
/(\w)*\\(?!\\)(\w)*\\(?!\\)(\w)*(?!\\)/g
的Javascript
function validateResourceName(string) {
var pattern = /(\w)*\\(?!\\)(\w)*\\(?!\\)(\w)*(?!\\)/g;
if (!pattern.test(string)) {
alert("not a match");
} else {
alert("match");
}
}