用于忽略除 space 和连字符之外的所有特殊字符的 JS 正则表达式
JS Regex for ignoring all special characters but space and hyphen
使用 "test" 函数,我想检查仅字母 (a-zA-Z) 字符串是否包含空格和连字符以外的任何特殊字符。
请注意,我在 JavaScript.
中使用此正则表达式
应该匹配:
- string = A B
- string = A-B
- string = ABC XYZ-ASD A
不应该匹配:
- string = ABC*
- string = AB IC-B_
- string = AB C$%^
- string = - //hyphen/s only
- string = ABC-
目前,我的正则表达式是:
/[a-z][\s|-][a-z]/i
有人可以建议对此进行更改以忽略那些特殊字符的情况。
谢谢!
您可以使用包含 a-z
、空格和连字符的字符 class,并检查整个字符串是否仅由这些字符组成,方法是从字符串 (^
) 到末尾 ($
):
const re = /^[a-z -]+$/i;
[
'A-B',
'ABC XYZ-ASD A',
'ABC*',
'AB IC-B_',
'AB C$%^'
].forEach((str) => {
console.log(
str + ' ' + (re.test(str) ? 'Pass' : 'Fail')
)
});
为了额外确保字符串不由所有连字符组成,从字符串的开头开始负前瞻 -
重复直到字符串的结尾:
const re = /^(?!-+$)[a-z -]+$/i;
[
'A-B',
'ABC XYZ-ASD A',
'ABC*',
'AB IC-B_',
'AB C$%^',
'--------'
].forEach((str) => {
console.log(
str + ' ' + (re.test(str) ? 'Pass' : 'Fail')
)
});
你期待这样的事情吗?
^[a-zA-Z-\s]*$
已更新:
^[a-zA-Z\s]+-*[a-zA-Z\s]*$
使用 "test" 函数,我想检查仅字母 (a-zA-Z) 字符串是否包含空格和连字符以外的任何特殊字符。
请注意,我在 JavaScript.
中使用此正则表达式应该匹配:
- string = A B
- string = A-B
- string = ABC XYZ-ASD A
不应该匹配:
- string = ABC*
- string = AB IC-B_
- string = AB C$%^
- string = - //hyphen/s only
- string = ABC-
目前,我的正则表达式是:
/[a-z][\s|-][a-z]/i
有人可以建议对此进行更改以忽略那些特殊字符的情况。
谢谢!
您可以使用包含 a-z
、空格和连字符的字符 class,并检查整个字符串是否仅由这些字符组成,方法是从字符串 (^
) 到末尾 ($
):
const re = /^[a-z -]+$/i;
[
'A-B',
'ABC XYZ-ASD A',
'ABC*',
'AB IC-B_',
'AB C$%^'
].forEach((str) => {
console.log(
str + ' ' + (re.test(str) ? 'Pass' : 'Fail')
)
});
为了额外确保字符串不由所有连字符组成,从字符串的开头开始负前瞻 -
重复直到字符串的结尾:
const re = /^(?!-+$)[a-z -]+$/i;
[
'A-B',
'ABC XYZ-ASD A',
'ABC*',
'AB IC-B_',
'AB C$%^',
'--------'
].forEach((str) => {
console.log(
str + ' ' + (re.test(str) ? 'Pass' : 'Fail')
)
});
你期待这样的事情吗?
^[a-zA-Z-\s]*$
已更新:
^[a-zA-Z\s]+-*[a-zA-Z\s]*$