我需要验证一个字符串,该字符串可以采用以下格式:
0000000000-0000
1001
1001-1
应该验证的可能格式
XXXXXXXXXX-XXXX
XXXX
XXXX-X
字符串中只需要数字,而 - 符号是可选的。 至少4位数(最多10位)然后是可选的 - 然后签名最多4位数(也是可选的)。
我尝试\d{4,}-?\d*
,但如图here所示,它匹配1232-test
,而不应该是-
。整个字符串必须是数字和可选的<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/task_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
tools:context="com.task.TaskActivity">
<RelativeLayout
android:id="@+id/task_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="#e4e4e4"
android:padding="10dp">
<View
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="3dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="#000000" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/task_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentStart="true"
android:layout_below="@id/task_header"
android:gravity="center">
<View
android:id="@+id/myRectangleView"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="316dp"
android:layout_marginStart="316dp"
android:layout_marginTop="114dp"
android:background="@drawable/rectangle"
android:visibility="invisible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlHardcoded" />
</RelativeLayout>
</RelativeLayout>
符号,没有别的。
以上所有内容都应该通过正则表达式,但没有别的。 我可以整天试着想出一些东西但是因为我从未深入研究正则表达式,所以我转向你们。
答案 0 :(得分:2)
试试这个^\d{4,10}(?:-\d{1,4})?$
https://regex101.com/r/00GCtH/1
格式化
^ # Begin of string
\d{4,10} # Required 4 to 10 digits
(?: # Optional dash and 1 to 4 digits
- \d{1,4}
)?
$ # End of string
答案 1 :(得分:0)
您当前的正则表达式没问题,只需将行的开头和结尾添加到其中:
^\d{4,}-?\d*$
但是,如果您想将其限制在上限(最多10个,最多4个),则添加它们:
^\d{4,10}-?\d{0,4}$