有没有办法根据正则表达式字符串返回特定位置的字符类型?
以示例:
正则表达式中的:[0-9]{2}/[A-Z]{2}/[0-9]{4}
总共有10个字符。
位置1应返回'数字'
第4位应该返回'字母'
位置3或6应返回'符号'
如果角色是符号,我也需要知道它是什么符号。
任何人都可以指出我这样做的方向吗?
答案 0 :(得分:4)
根据您的问题的逻辑,我只想检查其中一个组中是否包含该字符:数字(
0-9
),字母(A-Z
或a-z
)或symbol
..
您可以考虑使用Character Class,添加\W
来匹配任何非字母,数字或下划线的内容,并且由于_
被视为单词字符,您需要包含那也是。
^[0-9]{2}[\W_][a-zA-Z]{2}[\W_][0-9]{4}$
我需要知道它是什么符号......
在这种情况下,如果您想查看匹配的符号,可以将捕获组( )
放置在符号在正则表达式中的位置。
示例:
var str = '77$ba!1234';
res = str.match(/^[0-9]{2}([\W_])[a-zA-Z]{2}([\W_])[0-9]{4}$/);
console.log(res[1] + ', ' + res[2]); //=> "$, !"
答案 1 :(得分:1)
您可以使用Javascript中的typeof
运算符返回指示未评估操作数类型的字符串。您显然可以使用现有的正则表达式代码以及子字符串匹配来选择特定位置并使用typeof.
alert(typeof 1); //returns number
alert(typeof "a"); //returns string
有趣的是,对于符号的情况,你可能不得不使用一堆逻辑语句来查看和弄清楚,但我敢打赌它有更多的警告。一般技术是使用字典排序,并将每个字母转换为其UTF-8编码,然后从那里获取。最后,它将是一个类型的“字符串”。我不确定这是否是最有效的技术。
如果您只想要3类检查:
数字,字母和符号,然后它相当容易。它将提取if else if else
语句。