我正在尝试编写一个脚本来检测变量类型,并且我的正则表达式一直存在问题。
if(/\$\b([a-zA-Z]|_ )(\w)*\b /x && !/ /)
是我用来检测标量的。现在的问题是\b \b
似乎没有使用特殊字符(!@#$
等)。例如,它会将$var###
计为有效名称。有什么想法吗?
答案 0 :(得分:2)
你的正则表达式是正确的。您需要做的就是将其锚定到字符串的开头和结尾
^\$\b([a-zA-Z]|_ )(\w)*\b$
示例http://regex101.com/r/uD1eR7/1
所做的更改
^
将正则表达式锚定在字符串的开头
$
将正则表达式锚定在字符串的末尾
注意您还可以将下划线_
移动到字符类中并删除字边界,因为它不会带来额外的好处
^\$[a-zA-Z_]\w*$