我想使用点表示法(任何字母或数字以及_
和$
,只要它可以快速检查字符串是否可以用作属性名称不是以数字开头),显然如果使用了括号符号,那么一切都有效。
我一直在试图找到一个regEx解决方案,但是我对regEx的了解不是很好。我认为我当前的模式将允许使用字母,数字,$
和_
,但是我不知道如何禁止以数字开头
function validName(str){
// check if str meets the requirements
return /^[a-zA-Z0-9$_]+$/.test(str);
}
validName("newName") // should return TRUE
validName("newName32") // should return TRUE
validName("_newName") // should return TRUE
validName("4newName") // should return FALSE
validName("new Name") // should return FALSE
validName("") // should return FALSE
答案 0 :(得分:3)
添加负面的前瞻就足够了。
^(?![0-9])[a-zA-Z0-9$_]+$
function validName(str) {
// check if str meets the requirements
return /^(?![0-9])[a-zA-Z0-9$_]+$/.test(str);
}
console.log(validName("newName")) // should return TRUE
console.log(validName("newName32")) // should return TRUE
console.log(validName("_newName")) // should return TRUE
console.log(validName("4newName")) // should return FALSE
console.log(validName("new Name")) // should return FALSE
console.log(validName("")) // should return FALSE
答案 1 :(得分:2)
由于\w
涵盖了[a-zA-Z0-9_]
和\d
涵盖了[0-9]
,您可以使用此正则表达式:
const validName = str => /^(?!\d)[\w$]+$/.test(str);
console.log(validName("newName")) // should return TRUE
console.log(validName("newName32")) // should return TRUE
console.log(validName("_newName")) // should return TRUE
console.log(validName("4newName")) // should return FALSE
console.log(validName("new Name")) // should return FALSE
console.log(validName("")) // should return FALSE
答案 2 :(得分:1)
您可以将模式的第一个字符设置为相同的字符集,但不包括数字:
Counter counter = new Counter();
List<CounterThread> counterThreads = new ArrayList<>();
for (int i = 0; i < 3; i++) {
counterThread.add(new CounterThread(counter));
}
// start in a loop after constructing them all which improves the overlap chances
for (CounterThread counterThread : counterThreads) {
counterThread.start();
}
// wait for them to finish
for (CounterThread counterThread : counterThreads) {
counterThread.join();
}
// print the results
for (CounterThread counterThread : counterThreads) {
System.out.println(counterThread.result);
}
答案 3 :(得分:1)
在解决这种正则表达式时,我建议使用regexr.com
此摘要应解决您的问题。
function validName(str){
// check if str meets the requirements
return /^[^0-9][a-zA-Z0-9$_]+$/.test(str)
}
console.log(validName("newName")) // TRUE
console.log(validName("newName32")) // TRUE
console.log(validName("_newName")) // TRUE
console.log(validName("4newName")) // FALSE
console.log(validName("new Name")) // FALSE
console.log(validName("")) // FALSE