Use*_*ser 218 javascript regex
我需要找到一个只允许使用字母数字的注册表.到目前为止,我尝试的每个人只有在字符串是字母数字时才有效,这意味着包含字母和数字.我只想要一个允许两者的东西而不需要两者.
Gre*_*reg 463
/^[a-z0-9]+$/i
^ Start of string
[a-z0-9] a or b or c or ... z or 0 or 1 or ... 9
+ one or more times (change to * to allow empty string)
$ end of string
/i case-insensitive
Run Code Online (Sandbox Code Playgroud)
Vol*_*ike 137
如果你想返回一个替换结果,那么这将有效:
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);
Run Code Online (Sandbox Code Playgroud)
这将返回:
Test123TEST
Run Code Online (Sandbox Code Playgroud)
请注意,gi是必需的,因为它意味着全局(不仅仅是第一次匹配),而且不区分大小写,这就是为什么我有az而不是a-zA-Z.括号内的^表示"不在这些括号中的任何东西".
警告:如果这正是您想要的,那么字母数字就很棒.但是,如果您在国际市场上使用此类似于某个人的姓名或地理区域,那么您需要考虑unicode字符,这是不可行的.例如,如果你有一个像"Âlvarö"这样的名字,它会使它成为"lvar".
Cha*_*ert 78
使用单词class class.以下相当于^[a-zA-Z0-9_]+$
:
^\w+$
Run Code Online (Sandbox Code Playgroud)
说明:
使用/[^\w]|_/g
,如果你不想匹配下划线.
小智 34
/^([a-zA-Z0-9 _-]+)$/
Run Code Online (Sandbox Code Playgroud)
上面的正则表达式允许字符串中的空格并限制特殊字符.它只允许az,AZ,0-9,Space,Underscore和dash.
bdo*_*bro 18
对于多语言支持:
\nvar filtered = \'Hello \xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82 \xe4\xbd\xa0\xe5\xa5\xbd 123_456\'.match(/[\\p{L}\\p{N}\\s]/gu).join(\'\')\nconsole.log(filtered) // --> "Hello \xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82 \xe4\xbd\xa0\xe5\xa5\xbd 123456"\n
Run Code Online (Sandbox Code Playgroud)\n这与大多数语言中的任何字母、数字或空格匹配。
\n参考: https: //javascript.info/regexp-unicode
\ncle*_*tus 13
^\s*([0-9a-zA-Z]*)\s*$
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要至少一个字符:
^\s*([0-9a-zA-Z]+)\s*$
Run Code Online (Sandbox Code Playgroud)
方括号表示一组字符.^是输入的开始.$是输入结束(或换行符,具体取决于您的选项).\ s是空白.
之前和之后的空格是可选的.
括号是分组运算符,允许您提取所需的信息.
编辑:删除了错误使用\ w字符集.
小智 6
无需检查有效的字母数字字符串,您可以通过检查字符串中是否存在任何无效字符来间接实现此目的。通过检查与有效字母数字字符串的补码相匹配的任何内容来执行此操作。
/[^a-z\d]/i
Run Code Online (Sandbox Code Playgroud)
下面是一个例子:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
Run Code Online (Sandbox Code Playgroud)
请注意 处的逻辑非运算符isValid
,因为我正在测试字符串是否为假,而不是它是否有效。
这会奏效
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
Run Code Online (Sandbox Code Playgroud)
它仅接受alphanumeriuc字符:
测试用例:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
Run Code Online (Sandbox Code Playgroud)
要么
你也可以试试这个.这个表达式至少满足一个数字和一个字符,没有其他特殊字符
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
Run Code Online (Sandbox Code Playgroud)
在角度可以测试像:
$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);
Run Code Online (Sandbox Code Playgroud)
提到:Angularjs 中字母数字的正则表达式
我有类似于Samsung Galaxy A10s 6.2 英寸(2GB,32GB ROM)Android 9.0,(13MP+2MP)+ 8MP 双 SIM 4000mAh 4G LTE 智能手机 - 黑色(BF19)的字符串
以下是我所做的:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
Run Code Online (Sandbox Code Playgroud)
请注意,我允许,._-
使用split()
和分别join()
替换,
to-
和 space to -
。
我最终得到了这样的东西:
samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20
这就是我想要的。
可能有更好的解决方案,但这就是我发现对我来说效果很好的解决方案。
归档时间: |
|
查看次数: |
357162 次 |
最近记录: |