最近写的一个正则表达式验证器,很简单!很简单!

package com.freud.regex;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

/**
 * 
 * @title 0150 ( Small Tool ) - Regex_Validate_tool
 * @author Freud,Kang
 * 
 */
public class Validater {

	/** The main frame */
	private JFrame frame;
	/** The background panel */
	private JPanel background;

	/** The Label to show "regex" */
	private JLabel regex_Label;
	/** The TextArea to input regex expression */
	private JTextArea regex_TextArea;
	/** The Label to show "source" */
	private JLabel source_label;
	/** The TextArea to input source string */
	private JTextArea source_TextArea;

	/** The submit button */
	private JButton submit;
	/** The result Label to show result message */
	private JLabel result;
	/** The result Panel to show Color status */
	private JPanel result_panel;

	/**
	 * Constructor
	 */
	private Validater() {

		/**
		 * init main frame
		 */
		frame = new JFrame("Regex Validator");
		frame.setBounds(100,100,400,500);
		frame.setVisible(true);
		frame.setLayout(null);
		frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

		/**
		 * init main panel
		 */
		background = new JPanel();
		background.setSize(400,500);
		background.setLayout(null);
		background.setBackground(new Color(80,188,252));

		/**
		 * init components in main panel
		 */
		regex_Label = new JLabel("Regex");
		regex_Label.setBounds(10,10,50,20);

		regex_TextArea = new JTextArea();
		regex_TextArea.setBounds(60,300,100);

		source_label = new JLabel("Source");
		source_label.setBounds(10,130,10);

		source_TextArea = new JTextArea();
		source_TextArea.setBounds(60,100);

		submit = new JButton("Submit");
		submit.setBounds(150,250,30);
		submit.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String source = source_TextArea.getText();
				String regex = regex_TextArea.getText();

				if (regex == null || regex.isEmpty()) {
					notEmpty("Regex cannot be empty!");
					return;
				}

				reset(exe(source,regex));
			}
		});

		/**
		 * init result panel
		 */
		result_panel = new JPanel();
		result_panel.setBounds(10,360,20);
		result_panel.setBackground(Color.WHITE);
		result_panel.setLayout(null);

		result = new JLabel(" Result  :  Waiting");
		result.setBounds(140,110,20);
		result.setBackground(Color.WHITE);

		/**
		 * add the components to correct parents components
		 */
		result_panel.add(result);

		background.add(regex_Label);
		background.add(regex_TextArea);
		background.add(source_label);
		background.add(source_TextArea);
		background.add(submit);
		background.add(result_panel);

		frame.add(background);

		// repaint
		frame.repaint();
	}

	/**
	 * Use java API to judge whether source and regex matched
	 * 
	 * @param source
	 *            source string
	 * @param regex
	 *            regex expression
	 * @return
	 */
	private boolean exe(String source,String regex) {
		try {

			Pattern pattern = Pattern.compile(regex);
			Matcher matcher = pattern.matcher(source);

			boolean result = matcher.matches();
			String path = Validater.class.getProtectionDomain().getCodeSource().getLocation().toString().replace("file:/","").replace("file:\\","")
					.replace("bin\\","").replace("bin/","");

			BufferedWriter bw = null;

			try {

				bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(path + "Regex_validated_Log.txt"),true)));

				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				String date = sdf.format(new Date());

				bw.append(date);
				bw.append("\r\n\t\t\tregex : ");
				bw.append(regex);
				bw.append("\r\n\t\t\tSource : ");
				bw.append(source);
				bw.append("\r\n\t\t\tResult : ");
				bw.append(String.valueOf(result));
				bw.append("\r\n\r\n");

				bw.flush();
			} finally {
				if (bw != null) {
					bw.flush();
					bw.close();
				}
			}

			return result;

		} catch (Exception e) {
			return false;
		}

	}

	/**
	 * Main method
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		new Validater();
	}

	/**
	 * According to the compared result,reset the result components
	 * 
	 * @param flag
	 *            Type : Boolean
	 */
	private void reset(boolean flag) {
		/**
		 * if the result is true means the regex matches the source string
		 */
		if (flag) {
			result_panel.setBackground(Color.GREEN);
			result.setBackground(Color.GREEN);
			result.setText(" Result  :  success");

			/**
			 * Otherwise means not matched
			 */
		} else {
			result_panel.setBackground(Color.RED);
			result.setBackground(Color.RED);
			result.setText(" Result  :  Failed");
		}

		// repaint
		frame.repaint();
	}

	private void notEmpty(String error) {
		result.setBounds(120,150,20);
		result.setText(error);
		result_panel.setBackground(Color.PINK);
		result.setBackground(Color.PINK);
		frame.repaint();
	}
}


最近写的一个正则表达式验证器,很简单,很简单。不过很好玩!

没有什么技术含量,贴出来玩玩吧!

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...