JS 正则 允许半角英数字、- (减号)、_ (下划线) 允许全角文字 英数字、记号(空格除外)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 正则 允许半角英数字、- (减号)、_ (下划线) 允许全角文字 英数字、记号(空格除外)相关的知识,希望对你有一定的参考价值。

JS正则表达式允许数字、字母、减号、下划线 和全角所有文字,包括全角符号 , 空格除外(全角,半角空格都不行)
半角的符号就_ - 可以用,别的都不可以用
还有一个 :可以换行

var exp=/^(?:\\w|-|\\r|\\n|[\\u0100-\\uFFFF])*$/i;//姑且认为ascii以外字符全是全角,对汉字来说全覆盖,全角空格?是神马字符?用"【空格】".charCodeAt(0)获取unicode码后从范围中删除即可
console.log(exp.test("_azAZ\\n010-189554\\n好啊《书名号》?全角问号\\n换行"));//true
console.log(exp.test("+"));//false
console.log(exp.test(" "));//false

参考技术A 貌似是这个节奏
不等于排序不允许的 [^\s~!@#$%\^&\*\(\)\+\|\[\]\/<>.,]

正则表达式:要么只有数字或字母数字带' - '和'_'允许但不带数字' - '和' - '

我遇到麻烦模式匹配,我试图生成模式,可以接受只有数字或字母数字与'-'和'_'允许但不是数字与'-'和'-'允许,只有'-'和'_ '不应该被允许。

我试过下面的一个有点工作但完全正常工作。

^[a-zA-Z0-9][a-zA-Z0-9-_]+$

我试图匹配以下情况:

abcd = OK
as123 = Ok
as_as = Ok
as_12 = Ok
as-as = ok
12as = Ok
12_1as = Ok
123_12 = not Ok
12-12 = not Ok
1234 = ok
-- = not ok
__ = not ok

提前致谢

答案

这样做的工作:

var test = [
    'abcd',
    'as123',
    'as_as',
    'as_12',
    'as-as',
    '12as',
    '12_1as',
    '123_12',
    '12-12',
    '1234',
    '--',
    '__',
];
console.log(test.map(function (a) {
  return a+' : '+/^(?!d+[-_]d+$)[a-z0-9]+[-_]?[a-z0-9]+$/i.test(a);
}));
另一答案

您正在寻找这样的正则表达式,它可以从负面的前瞻中受益:

^(?!d*(?:[-_]+d*)*$)[w-]+$

Live demo

以上是关于JS 正则 允许半角英数字、- (减号)、_ (下划线) 允许全角文字 英数字、记号(空格除外)的主要内容,如果未能解决你的问题,请参考以下文章

[javascript] 记录一次解决输入内容控制为 半角英数字 + 限定符号问题的过程

求...js正则表达式 只能是字母,数字,减号,下划线组成,

Javascript 正则表达式到数字/十进制和减号

typescript正则 全角数字

js中用户名的正则(字符,数字,下划线,减号)

java验证,”支持6-20个字母数字下划线或减号,以字母开头“这个的正则表达式怎么写?