Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式:必须至少有一个数字、一个字母,并且应该允许空白_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式:必须至少有一个数字、一个字母,并且应该允许空白

Javascript 正则表达式:必须至少有一个数字、一个字母,并且应该允许空白,javascript,regex,Javascript,Regex,我需要一个表达式,它将针对任何只包含数字、字母和空格的字符串进行验证,但每个字符串必须至少包含一个(大写和小写可以互换,并且允许)。它不能包含特殊字符 我尝试使用此选项,但不考虑空格: ^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$ 需要验证的字符串的一些示例: 第123街[有效] 123街[有效] 123街[有效] 123街[有效] 街道[无效] 123[无效] 你们非常接近。正向前瞻是好的,但根据定义,它不会使光标前进。如果锚定在字符串的开头和结尾,则

我需要一个表达式,它将针对任何只包含数字、字母和空格的字符串进行验证,但每个字符串必须至少包含一个(大写和小写可以互换,并且允许)。它不能包含特殊字符

我尝试使用此选项,但不考虑空格:

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
需要验证的字符串的一些示例:

  • 第123街[有效]
  • 123街[有效]
  • 123街[有效]
  • 123街[有效]
  • 街道[无效]
  • 123[无效]

你们非常接近。正向前瞻是好的,但根据定义,它不会使光标前进。如果锚定在字符串的开头和结尾,则需要为catchall添加
*
。此外,您还需要测试以排除特殊字符:

const输入=[
"123街",,
"123街",,
‘123街’,
‘123街’,
"街",,
'123',
'Street@123!'
];
常量正则表达式=/^(?=.[0-9])(?=.[a-zA-Z])(?!.[^a-zA-Z0-9])*$/
input.forEach(str=>{
console.log(''''+str+'==>'+regex.test(str));

});是否至少需要一个空格?有问题吗?这回答了你的问题吗?你也可以通过只在字符类
[a-zA-Z0-9]+
中添加一个空格来省略最后一个前瞻性,并且为了防止不必要的回溯,使用否定字符类
^(?=[^\d\r\n]*[0-9])(?=[^a-zA-Z\r\n]*[a-zA-Z])[a-zA-Z0-9]+$
@Ourthbird:不,删除最后一个lookahead并添加空格将不起作用,输入``将导致误报。它与空格``不匹配。前瞻已经保证了一个字符a-zA-Z和一个数字,因此没有误报@Thefourthbird:啊,我被混淆为“只是在字符类中添加一个空格”,它没有指定位置,所以我解释它将其添加到正向前瞻中。是的,将
(?!.[^a-zA-Z0-9]).
替换为
[a-zA-Z0-9]+
应该可以