我不知道如何在JavaScript或jQuery中创建正则表达式。
我想创建一个正则表达式,它将检查字符串是否只包含a-z和A-Z之间的字符,并且任何排列。
修改
当我试图制作正则表达式时
/^[a-zA-Z\s]+$/
也接受白色空间。它不起作用。可能是什么错误?
我正在 JavaScript RegExp Example: Online Regular Expression Tester 测试我的正则表达式。
答案 0 :(得分:60)
/^[a-zA-Z]*$/
如果您不想允许空匹配,请将*
更改为+
。
Character classes ([...]
),Anchors (^
and $
),Repetition (+
, *
)
/
只是分隔符,它表示正则表达式的开头和结尾。现在,您可以使用modifiers。
答案 1 :(得分:23)
抄袭其他答案所说的内容,因为你根本不知道怎么做,这里有一个如何用JavaScript做的例子:
var charactersOnly = "This contains only characters";
var nonCharacters = "This has _@#*($()*@#$(*@%^_(#@!$ non-characters";
if (charactersOnly.search(/[^a-zA-Z]+/) === -1) {
alert("Only characters");
}
if (nonCharacters.search(/[^a-zA-Z]+/)) {
alert("There are non characters.");
}
开始和结束正则表达式的/
表示它是正则表达式。 search
函数同时使用字符串和正则表达式,因此/
是指定正则表达式所必需的。
从the MDN Docs开始,如果没有匹配项,函数将返回-1
。
另请注意:这仅适用于 a-z,A-Z。如果有空格,它就会失败。
答案 2 :(得分:9)
/^[a-zA-Z]+$/
脱离我的头顶。
编辑:
或者,如果您不喜欢奇怪的文字语法,可以像这样做
new RegExp("^[a-zA-Z]+$");
答案 3 :(得分:2)
使用POSIX Bracket表达式(Javascript不支持)可以这样做:
/[:alpha:]+/
任何字母A至Z或a至z。
或
/^[[:alpha:]]+$/s
严格匹配空格。
答案 4 :(得分:1)
这 /[^a-z]/g
解决了问题。
function pangram(str) {
let regExp = /[^a-z]/g;
let letters = str.toLowerCase().replace(regExp, '');
document.getElementById('letters').innerHTML = letters;
}
pangram('GHV 2@# %hfr efg uor7 489(*&^% knt lhtkjj ngnm!@#$%^&*()_');
<h4 id="letters"></h4>