新手问题 如何用正则表达式判断一个字符串的开头是否是数字?

easonlovejiven · 2015年02月12日 · 最后由 qhwa 回复于 2015年02月12日 · 3491 次阅读

用正则表达式判断一个字符串的开头是否是数字

/\A\d/

如果不是特别需要,我会用 \A 而不是 ^,防止考虑不周带来的安全问题。 区别是:

/\A\d/ =~ "0aa"    #=> 0
/^\d/  =~ "0aa"    #=> 0

/\A\d/ =~ "aaa\n0" #=> nil
/^\d/  =~ "aaa\n0" #=> 4

#2 楼 @qhwa 看来 ruby 是默认开启多行匹配的,在 js 里面,如果不加 m flag,则 ^ $ 的意义与 \A \z 一样。

#3 楼 @alsotang 你在 vim 里按 ^ 也是到行首而不是文件首

#3 楼 @alsotang 其实是单行模式。ruby 的单行模式中 ^ 就是匹配「行首」,而不是「起始」。和 js 处理不同。

实际上 ruby 的多行模式是这样的:

# 这是单行模式
/a.b/   =~ "aaa\nbbb"  #=> nil

# 这是多行模式
/a.b/m  =~ "aaa\nbbb"  #=> 2
需要 登录 后方可回复, 如果你还没有账号请 注册新账号