我需要在javascript中编写验证,以检测输入值是否为camelcase格式。第一封信预计是小写的。
我从stackflow获得了一些代码,并在JSFIDDLE.
中创建它适用于helloWorld和HelloWorld
如果有人能帮助我完成任务,我将不胜感激。
function myFunction() {
var str = "HeLloWorld";
var patt = new RegExp("[a-z]([a-z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*");
var res = patt.test(str);
document.getElementById("demo").innerHTML = res;
}
注意:我一直在玩它。所以它不是正确的正则表达式。
答案 0 :(得分:0)
我没有深入研究模式,但只有在添加边界或锚点时,它似乎适用于您的输入。匹配HelloWorld
的问题是您的模式匹配elloWorld
并且RegExp#test()
返回true。
^[a-z]([a-z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*$
或
\b[a-z]([a-z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*\b
请参阅regex demo
function myFunction() {
var str = "HelloWorld";
var patt = /\b[a-z]([a-z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*\b/;
var res = patt.test(str);
document.getElementById("demo").innerHTML = "HelloWorld match with word boundaries: " + res + "<br/>";
var patt2 = /^[a-z]([a-z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*$/;
document.getElementById("demo").innerHTML += "HelloWorld match with start/end string anchors: " + patt2.test(str);
}
<p>The test() method returns true if it finds a match, otherwise it returns false.</p>
<p>Click the button to search a string for the character "e".</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>